java:FileInputStream.read()读取一个字节但可以读取一个char,怎么来的?

时间:2013-07-04 22:39:43

标签: java char byte fileinputstream

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

HELLO WORLD

我已经使用了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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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();
        }
   }