Java中有DataInputStream()和DataOutputStream(),还可以用BufferedReader(InputStreamReader())和BufferedWriter(OutputStreamWriter())实现类似的功能。
这两种实现有什么区别呢?

解决方案 »

  1.   

    前者有很多 按类型读写的方法,也有个readLine()方法,不过已经过时(deprecated)
    后者是带缓冲区的,最喜欢的莫过于它的readLine()啦
      

  2.   

    ------------------用于封装以字节为导向的InputStream
    1) DataInputStream:从二进制流中读取基本类型(int、char等)数据。
      
        2) BufferedInputStream:使用缓冲区
      
        3) LineNumberInputStream:会记录input stream内的行数,然后可以调用getLineNumber()和setLineNumber(int)
      
        4) PushbackInputStream:很少用到,一般用于编译器开发
     ---------------- 用于封装以字符为导向的InputStream
      
        1) 没有与DataInputStream对应的类。除非在要使用readLine()时改用BufferedReader,否则使用DataInputStream
      
        2) BufferedReader:与BufferedInputStream对应
      
        3) LineNumberReader:与LineNumberInputStream对应
      
        4) PushBackReader:与PushbackInputStream对应
      
        2.3 FilterOutStream的各种类型
      
    ------------------用于封装以字节为导向的OutputStream
      
        1) DataOutStream:往stream中输出基本类型(int、char等)数据。
      
        2) BufferedOutStream:使用缓冲区
      
        3) PrintStream:产生格式化输出(与PrintWrite有一定区别)
    -
    (Thinking in Java 第十章)IO 流
    http://www.wangchao.net.cn/bbsdetail_21046.html
      

  3.   

    看一下API文档,我感觉就清楚了。
      

  4.   

    Stream 结尾的是字节流,单位是字节,
    Reader 是字符流,单位是字符
    字节和字符的区别,应该知道吧?
      

  5.   

    楼主在比较reader和stream么?我没理解错的话
    如果是的话,可比性在哪儿呢?
      

  6.   

    二楼的差不多是我要的,我举个例子,一个程序通过socket要输入数据,那就是两种情况:
    1:DataInputStream(socket s.getInputStream())
    2:BufferedReader(InputStreamReader(socket s.getInputStream()))
    或者也可以这样:
    3:BufferedInputStream(socket s.getInputStream())我理解就这三种,第一种和第三种是以字节为基础的。第二种是转换为了字符,然后以字符为基础的。后两种都有一个挺好的方法:readLine(),第一种的readLine()过时了。
    除此之外这三者还有什么区别呢?
    实际使用的时候第一种和第二种好像没太大区别啊?我菜鸟,烦请高人指点!
      

  7.   

    说到socket,我想到了4层模型,网络接口层、网间网层、传输层、应用层
    我们做的就是应用层.在"网络接口层"上套了个"网间网层",在套上了个"传输层"
    最后是"应用层"..这样对我们来说底层就变得透明..于在InputStreamReader外面套一个
    BufferedReader有异曲同工之妙..当然这个对可能不是很恰当..随便说说
      

  8.   

    恩,我和你的理解差不多。不过我还是想知道这两个套套有什么不一样的地方。除了那个readLine()方法。
      

  9.   

    DataInputstream 是数据流;而下面的那个只是一个带缓冲的字符流;
    传输的类型不同。DataInputstream可以直接读进来一个比如Int;long这样的数据;
    这才是这个流的真正意义所在;貌似。。
      

  10.   

    比如让你把一个int类型的数据读入到一个文件里?你打算怎么读?