我是新人,学到io了,看了又看想了又想。但是InputStream ,Reader , FileReader , InputStreamReader ,FilterInputStream ,PipedInputStream ,PipedReader这些都是干什么用的。有什么区别啊。我实在分不清楚了。希望有高人能指点一下,说的越详细越好。谢谢了。

解决方案 »

  1.   

    书里讲了这些区别的,至少Java完全探索是讲了的.
      

  2.   

    想区分的最好方法,是针对每一个具体类,写一段测试代码,自己感受一下,从感性到理性,
    然后对着API文档,好好看看。一切自明。
      

  3.   

    就是读写数据啊,有些是按照一个一个byte来读写的,有些是按照一个一个char来读写的
      

  4.   

    有个nio的教程,你去http://tryosp.cn搜索一下
      

  5.   

    基本上以下四个类是那些林林总总io类的一个综合抽象 
    InputStream OutputStream Reader Writer
    由于读写在功能上是相仿的 可继续浓缩为两大抽象类
    XxxStream Xxxer
    那些concrete class都是继承且将以上两个抽象类发扬光大的
    XxxStream 处理 Byte Stream
    Xxxer 处理 Character Stream
    具体类也都有各自独到的用处与特色
      

  6.   

    Stream   结尾 == 字节流
    非Stream 结尾 == 字符流
      

  7.   

    wirter/reader和inputstream/outputstream的最大区别在于encode和decode.   
        
      inputstream/outputstream   直接对byte[]进行操作,不会更改任何信息,原原本本的反应数据内容。   
      writer/reader在操作时会进行decode/encode.   它会根据你的系统属性file.encoding来decode数据。比如你从文件中读取一行,用reader.readLine()返回的string是经过decode的数据。如果你的文件的encoding不等于你的file.encoding的值,就会产生编码错误。
      

  8.   

    首先我要谢谢大家,同时还要问一下楼上的大哥,麻烦你encode和decode解释一下好吗?为什么writer和reader它们会进行呢?谢谢你啊。
      

  9.   

    嘿嘿!
    encode与decode与字面理解的意义正好相反,它们实际上指的是perl的内在data表现方式,encode通常是指unset perl内部的utf-8 flag,而decode则设置这个flag。所以decode实际上创建utf-8字符串,encode则反之。
    例如,如下语句设置输出句柄的编码:open my $out, ">:encoding(Latin1)"; #or
    binmode(STDOUT, ":encoding(Big5)");
    希望对你有帮助!