两个程序1:FileReader fr = new FileReader("ming.txt");
         int ch = 0;
         while((ch = fr.read())!=-1 )
         {
             System.out.print((char)ch); 
         } 
       2:FileInputStream fis=new FileInputStream("ming.txt");
         byte[] b=new byte[1024];
         int ch = 0;
         while((ch = fr.read(b))!=-1 )
         {
             System.out.write(b,0,n); 
         } 
上网查询了下资料,这两个类的区别,FileReader处理的是字符(unicode 16位的 char),而FileInputStream处理的是字节(8位的byte).还说----最初Java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类!
我不明白的是:
1:我上面两个例子程序处理的都是txt的文本文件,输出的结果是一样的,没看到FileInputStream不支持对
文本文件的区别啊?
2:这两个类在使用的时候到底有什么区别,我们普遍使用哪个类处理文件?
谢谢!!

解决方案 »

  1.   

    FileInputStream和FileReader都是读文件的,只是前者每次读一个byte,后者每次读一个char(2个字节)另外两个是写文件的,区别和上面的一样。读文本的时候用哪个都可以,读二进制文件或自定义格式的文件的时候,用读byte的通用一些
      

  2.   


    1,有区别 只是你看不到
    输入不同,输出也不同啊你意图打印在屏幕的代码System.out.print((char)ch);    System.out.write(b,0,n);   
    同样是以不同参数,不同方法进行的 一个输入了字符,一个输入了字节
    再当System.out把结果给屏幕的时候 看到的又是一样了你可以设个断点 
    2,通常文本文件FileReader,二进制文件FileInputStream
    但FileInputStream实现了InputStream接口 适用性可以无限扩张
    文件读入的所有类 所有功能都是基于FileInputStream
      

  3.   

    请问所谓的文本文件是什么文件帮我举几个例子?
    而二进制文件帮我举几个例子?
    比如txt java tmp !
      

  4.   

    FileInputStream和FileReader都是读文件的,只是前者每次读一个byte(属于流文件),后者每次读一个char(2个字节) 另外两个是写文件的,区别和上面的一样。 读文本的时候用哪个都可以,读二进制文件或自定义格式的文件的时候,用读byte的通用一些
      

  5.   

    FileReader处理的是字符(unicode   16位的   char),而FileInputStream处理的是字节(8位的byte)
      

  6.   

    有helpdoc原文如下
    FileReader is meant for reading streams of characters. For reading streams of raw bytes, consider using a FileInputStream. FileReader是读字符流的。如果要读原始字节流,考虑使用FileInputStream。输出与输入类同
      

  7.   

    比如说你要读写java的源文件,因为.java的文件你们都是字符,这时你可以用FileReader读,用Writer写。
    如果你想改下java编译的的字节码,因为.class里面有一些已经是二进制的字节码了
    这时你就要用FileInputStream,FileOutputStream来操做了。基本上来说,用记事本打开很正常的文件就可以Reader,writer来操作,如果打开乱码一堆的就要用FileInputStream,FileOutputStream来操做