Java 从文件中读取位

Java 从文件中读取位,java,file,bits,Java,File,Bits,如何从文件中读取位?我写了一些类似的文件: File plik=new File("bitowo"); FileOutputStream fos=new FileOutputStream(plik); byte[] test =new byte[2]; test[0]=(byte)01101000; test[1]=(byte)10101010; fos.write(test); fos.close(); 而“bitowo”只有2个字节,但我如何才能从文件“bitowo

如何从文件中读取位?我写了一些类似的文件:

File plik=new File("bitowo");
  FileOutputStream fos=new FileOutputStream(plik);
  byte[] test =new byte[2];
  test[0]=(byte)01101000;
  test[1]=(byte)10101010;
  fos.write(test);
  fos.close();

而“bitowo”只有2个字节,但我如何才能从文件“bitowo”一位接一位地读取呢

你不能一点一点地阅读。您可以一点一点地执行此操作。

此操作:

test[0]=(byte)01101000;
test[1]=(byte)10101010;
不会做你认为它会做的事。具体地说,它不使用代码所建议的位模式写入两个字节

数字
01101000
将被解释为八进制整数文字,因为它以
0
开头。在十进制中,这将是数字
295424
。当您将其转换为
字节时,只保留较低的8位,而那些正好是
0
。因此,文件中的第一个字节是
0

数字
10101010
将被解释为十进制整数文字(一千万、一百一十)。同样,通过将其强制转换为
byte
,只保留较低的8位,因此文件中的第二个字节将包含值
18
(十进制)

如果您使用的是Java 7,则可以在代码中使用二进制文字,方法是在数字前面加上
0b

test[0]=(byte)0b01101000;
test[1]=(byte)0b10101010;

要读回这两个字节,只需使用
FileInputStream
打开文件并从中读取两个字节。

我希望您知道这样一个事实,即您的字节具有完全不同的位表示!!上面的代码错了吗?我怎么能做得对呢?干得好!我从文件usetobinarystring中读取int,并将零添加到字符串中(如果int小于128)。