使用FileInputStream读取文件

时间:2015-12-12 17:39:47

标签: java fileinputstream fileoutputstream

首先,我使用FileOutputStream在文件中写入一个大整数。

e.g。

int a = 2051741;
fileA.write(a);

然后,当我使用FileInputStream读取数据时。

e.g。

int b = fileA.read();

当我打印出b时,它会像112

那样小

为什么会这样?如何读出原始整数?

3 个答案:

答案 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)

FileInputStreamFileOutputStream处理数据字节。更具体地说,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值。