从文件中读取位

时间:2012-11-13 13:04:10

标签: 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”读取?

2 个答案:

答案 0 :(得分:4)

你无法逐位阅读。你可以 read byte-by-byte,然后shift your byte逐位。

答案 1 :(得分:4)

此:

test[0]=(byte)01101000;
test[1]=(byte)10101010;

不按照您的想法行事。具体来说,它不会使用代码似乎建议的位模式写入两个字节。

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

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

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

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

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