IO包中已经有FileReader和FileWriter 为什么还需要OutputStreamWriter 和 InputStreamReader的转换流来把字节流转换成字符流呢,如果直接定义成FileReader不就不需要把FileInputStream用InputStreamReader来转换了吗?JAVA这样多定义一个转换流有没有其他好处。

解决方案 »

  1.   

    FileReader, FileWriter 只是使用默认编码, OutputStreamWriter 和 InputStreamReader 可以指定其它编码
      

  2.   

    1.IO包中已经有FileReader和FileWriter 为什么还需要OutputStreamWriter 和 InputStreamReader的转换流来把字节流转换成字符流呢
    因为有的时候你只能得到字节流,或对方只接受字节流,这时候就需要进行转换;或者你得到的字符流编码不正确,需要手工去指定编码方式解码。2.如果直接定义成FileReader不就不需要把FileInputStream 用InputStreamReader来转换了吗?
    如果你能控制所有的流程并且保证编码正确,的确可以不使用InputStreamReader。但你做多了以后会发现这样的好的情况并不总是有的,特别是写复杂的程序,跨语言、跨平台、网络化的程序的时候。
      

  3.   

    FileReader读文件
    FileWriter 写文件
    输出流 OutputStreamWriter 
    读入流 InputStreamReader
    操作对象都不同吧?我初学者,说得不对的地方大家指教 - -