FileReader和FileInputStream的不同输出

时间:2013-05-24 19:07:10

标签: java filereader fileinputstream

import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        FileReader fileReader1 = new FileReader("C:\\test\\input.txt");
        FileInputStream fileInputStream1 = new FileInputStream("C:\\test\\input.txt");
        FileReader fileReader2 = new FileReader("C:\\test\\abc.png");
        FileInputStream fileInputStream2 = new FileInputStream("C:\\test\\abc.png");

        int ab=fileReader1.read(); 
        int bc=fileInputStream1.read();

        int ab1=fileReader2.read();
        int bc1=fileInputStream2.read();

        System.out.println("reading a file : fileReader:"+ab+" fileInputStream:"+bc);
        System.out.println("resding  PNG : fileReader:"+ab1+" fileInputStream:"+bc1);
    }
}

输出:

reading a file : fileReader:104 fileInputStream:104
resding  PNG : fileReader:8240 fileInputStream:137

我正在使用FileReader和FileInputStream来读取txt文件并读取图像文件。我知道读取字节明智和其他char明智。但我没有得到这个ouptput。

2 个答案:

答案 0 :(得分:1)

的FileReader:

  

阅读字符文件的便捷类。此类的构造函数假定默认字符编码和默认字节缓冲区大小是合适的。

的FileInputStream:

  

FileInputStream用于读取原始字节流,例如图像数据。要读取字符流,请考虑使用FileReader。

答案 1 :(得分:1)

PNG文件中的第一个字节是0x89或137十进制。 FileInputStream按原样报告字节,而FileReader假定它是Windows 1252代码页中的字符,并将其转换为相应的UTF-8字符代码,0x2030或8240十进制。 (这假设您在具有默认代码页1252的Windows计算机上运行代码。)

相关问题