2
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

txtファイルの読み取りと画像ファイルの読み取りにFileReaderとFileInputStreamを使用しています。私は、バイト単位およびその他の文字単位の読み取りについて知っています。しかし、私はこの出力を得ていません。

4

2 に答える 2

1

PNG ファイルの最初のバイトは 0x89、つまり 10 進数の 137 です。FileInputStream はバイトをそのままレポートしますが、FileReader はそれが Windows 1252 コード ページの文字であると想定し、対応する UTF-8 文字コード、0x2030、または 8240 10 進数に変換します。(これは、デフォルトのコード ページ 1252 を使用して Windows マシンでコードを実行したことを前提としています)。

于 2013-05-24T20:56:36.317 に答える