1

我正在测试 FileInputStream,以读取文件的文本(dulo.txt),文件中的文本是(在 ANSI 中):

你好世界

我使用了 FileInputStream.read() 方法,据我所知 read() 只能读取下一个字节,并且由于 char 是2 个字节,程序如何工作?不应该崩溃吗?

这是我的代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;



class Collections {
  public static void main(String args[]) throws IOException {
      FileInputStream fis= new FileInputStream(new File("dulO.txt"));

      int spazioByte=fis.available();

      for(int i=0; i<spazioByte;i++){
          System.out.println("Byte: "+i+" :"+(char)fis.read());
      }



  }
}

控制台输出:

Byte: 0 :H
Byte: 1 :E
Byte: 2 :L
Byte: 3 :L
Byte: 4 :O
Byte: 5 : 
Byte: 6 :W
Byte: 7 :O
Byte: 8 :R
Byte: 9 :L
Byte: 10 :D
4

2 回答 2

2

Char 是非 unicode 格式的 1 个字节。例如,ASCII 格式表示只有 1 个字节的 char。

于 2013-07-04T22:42:02.377 回答
0

如果你想从文件中读/写字符,你可以使用 Reader/Writer。下面我展示了如何使用 Reader 的简单示例

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class TestReader {

private final static int SIZE = 200;

       public static void main(String[] args) throws IOException {
            Reader reader = new FileReader("1.txt");

            char[] buf = new char[SIZE];
            int count;
            while((count = reader.read(buf)) != -1) {
                for (int i = 0; i < count; i++)
                    System.out.println(buf[i]);
            }
            reader.close();
        }
   }
于 2014-03-15T22:31:55.383 回答