如何将二进制文件写入 Java 中的文件

How to write binary to a file in Java

我正在尝试从文件中获取输入,将字符转换为二进制,然后将二进制输出到另一个输出文件。

我使用 Integer.toBinaryString() 来进行转换。

一切正常,但由于某种原因,没有任何内容写入输出文件,但是当我使用 System.out.println() 时,它输出正常。

import java.io.*;

public class Binary {

    FileReader fRead = null;
    FileWriter fWrite = null;
    byte[] bFile = null;
    String fileIn;

    private String binaryString(int bString) {

        String binVal = Integer.toBinaryString(bString);

        while (binVal.length() < 8) {
            binVal = "0" + binVal;
        }

        return binVal;
    }

    public void input() throws IOException, UnsupportedEncodingException {
        try {
            fRead = new FileReader("in.txt");
            BufferedReader reader = new BufferedReader(fRead);

            fileIn = reader.readLine();
            bFile = fileIn.getBytes("UTF-8");

            fWrite = new FileWriter("out.txt");
            BufferedWriter writer = new BufferedWriter(fWrite);

            for (byte b: bFile) {
                writer.write(binaryString(b));
                System.out.println(binaryString(b));
            }
            System.out.println("Done.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Binary() {

    }

    public static void main(String[] args) throws UnsupportedEncodingException, IOException {
        Binary b = new Binary();
        b.input();
    }

}

我知道我的代码不是很好,我对 Java 比较陌生,所以我不知道有多少其他方法可以完成此操作。

使用输出流而不是写入器,因为写入器不应该用于写入二进制内容

FileOutputStream fos = new FileOutputStream(new File("output.txt"));
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(b); // in loop probably