JAVA - 将二进制数写入文件并读取

时间:2013-04-01 12:57:00

标签: java binary inputstream readfile fileoutputstream

如何在不使用它的情况下将文件写入二进制数来删除零。

我写的是这样的:

byte[] b = new BigInteger("1011010101010110", 2).toByteArray();

FileOutputStream fos = new FileOutputStream("file",true);
fos.write(b);

但是后来例如:当我写0000001时,它只在文件中写入1并忽略零,如果我写001001001000就会发生同样的情况,它会忽略左边的零点,从右边到右边读取8位左

将二进制数字写入文件的正确方法是什么?如果这是正确的方法,我可能会尝试以错误的方式读取文件(我正在使用InputStream的read())

Ps-(8位必须是1个字节所以写入字符串不是一个选项,因此每个数字都是1个字节。)

2 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情

    String s = "0000001";
    byte[] a = new byte[s.length()];
    for (int i = 0; i < s.length(); i++) {
        a[i] = (byte) (s.charAt(i) & 1);
    }

答案 1 :(得分:0)

您不希望将其写为二进制文件,您希望将其写为表示二进制文件的String。问题是Java无法知道你想要填充它。我建议将二进制数转换为字符串,然后用0填充左边填充(Apache StringUtils将有助于此)