如何从文件中读取位?我写了一些文件来提交类似的东西:
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”读取?
答案 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
打开文件,然后从中读取两个字节。