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)。