FileInputStream的read()方法;
API上说:从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞,返回下一个数据字节;如果已到达文件末尾,则返回 -1;
比如说:
FileReader in=new FileReader("1.txt");
b=in.read();
in.close();
System.out.print((char)b);
假如1.txt文件中有一个英文字符或者一个汉字,都是占两个字节,而read();一次只能读一个字节,为什么能正确显示字符? 

解决方案 »

  1.   

    FileInputStream的read()方法;
    API上说:从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞,返回下一个数据字节;如果已到达文件末尾,则返回 -1;
    比如说:
    FileReader in=new FileReader("1.txt");自己注意下你用的是什么类,Reader是按字符来读的
      

  2.   

    那也要看什么编码了,UTF-8和ASCII就不一样了
      

  3.   

    FileReader 就是按照字符来读的啊
    FileInputStream 才是按照字节流读的
      

  4.   

    指的是每次读1个字节。知道读完1.txt吧?而不是只读1次并且是1字节。
      

  5.   

    谁告诉你reader的read()方法一次读一个字节!!!
    reader是字符流,一次读一个字符。读一个英文、一个汉字、一个日文,一个法文等。
    reader是sun为了国际化发明的东西。假设一种语言很变态,一个字符占10个字节,那么read()就会读10个字节。
      

  6.   

    IO从输出方式上分为字符流和字节流
    FileInputStream是字节流 所以 read方法读一个字节
    FileReader是字符流 每次读的是一个字符 所以可以正常显示
    如果你想用字节流读的话 可以进行一部转化 就是字节流到字符流的转化
    InputStreamReader 类名 = new InputStreamReader(FileInputStream 对象) 
      

  7.   

    自己复习下基础知识
    Sream分字符和字节流。当然还有其他分类方法如:节点流和包装流,输入流和输出流
      

  8.   

    Java API中读入一个字节序列的对象称作输入流,向其中写入一个字节序列的对象称作输出流。如InputStream和OutputStream。但是面向字节的流不便于处理以Unicode(Unicode中每个字符都用多个字节来表示)形式存储的信息,所以从抽象类Reader和Writer中继承处来专门用于处理Unicode字符的类构成了一个单独的层次结构。