首先,我使用FileOutputStream在文件中写入一个大整数。
e.g。
int a = 2051741;
fileA.write(a);
然后,当我使用FileInputStream读取数据时。
e.g。
int b = fileA.read();
当我打印出b
时,它会像112
为什么会这样?如何读出原始整数?
答案 0 :(得分:2)
public void write(int b) throws IOException
将指定的字节写入此文件输出流。实现OutputStream的write方法。
您需要使用支持它的另一种类型的OutputStream来装饰您的OutputStream。即DataOutputStream
DataOutputStream out = new DataOutputStream(new FileOutputStream("MyFile.txt"));
out.writeInt(20);
out.writeInt(53432542);
out.writeLong(5234843258938L);
out.close();
DataInputStream in = new DataInputStream(new FileInputStream("MyFile.txt"));
System.out.println(in.readInt());
System.out.println(in.readInt());
System.out.println(in.readLong());
in.close();
答案 1 :(得分:0)
FileInputStream
和FileOutputStream
处理数据字节。更具体地说,read()
读取单个字节,write(int)
写入一个字节。
OutputStream.write(int)
的Javadoc说:
将指定的字节写入此输出流。写入的一般合同是将一个字节写入输出流。要写入的字节是参数b的八个低位。 b的24个高位被忽略。
这意味着当您给出int
值时,将忽略24位高位。根据{{1}}的参数,删除24个高位,你可以进入2051741
。
您最终阅读的内容是:2051741 & 0xFF = 157
之类的小数字。
答案 2 :(得分:0)
您可以使用Scanner
来阅读文件的内容:
Scanner s = new Scanner(file)
int b = s.nextInt();
System.out.print(b);
这是用于从文件中读取单个值,这是一种在文件具有多个值时的方法:
while(s.hasNext()){
int b[i] = s.nextInt();
i++;
}
for(int x:b)
System.out.print(b);
您也可以使用nextBigInteger()
等方法来获取较大的integer
值。