关于两种输入输出流的区别问题

Jzhgliu 2009-10-08 10:44:22
Java中有

DataInputStream()和DataOutputStream(),

还可以用

BufferedReader(InputStreamReader())和BufferedWriter(OutputStreamWriter())

实现类似的功能。
这两种实现有什么区别呢?
...全文
320 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
silence282351924 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jzhgliu 的回复:]
恩,我和你的理解差不多。不过我还是想知道这两个套套有什么不一样的地方。除了那个readLine()方法。

[/Quote]
比如让你把一个int类型的数据读入到一个文件里?你打算怎么读?
silence282351924 2009-10-10
  • 打赏
  • 举报
回复
DataInputstream 是数据流;而下面的那个只是一个带缓冲的字符流;
传输的类型不同。DataInputstream可以直接读进来一个比如Int;long这样的数据;
这才是这个流的真正意义所在;貌似。。
24K純帥 2009-10-10
  • 打赏
  • 举报
回复
up..
Jzhgliu 2009-10-09
  • 打赏
  • 举报
回复
恩,我和你的理解差不多。不过我还是想知道这两个套套有什么不一样的地方。除了那个readLine()方法。
liuxiaosabbath 2009-10-08
  • 打赏
  • 举报
回复
楼主在比较reader和stream么?我没理解错的话。。。
如果是的话,可比性在哪儿呢?
myj870517 2009-10-08
  • 打赏
  • 举报
回复
Stream 结尾的是字节流,单位是字节,
Reader 是字符流,单位是字符
字节和字符的区别,应该知道吧?
leafsoar 2009-10-08
  • 打赏
  • 举报
回复
说到socket,我想到了4层模型,网络接口层、网间网层、传输层、应用层
我们做的就是应用层.在"网络接口层"上套了个"网间网层",在套上了个"传输层"
最后是"应用层"..这样对我们来说底层就变得透明..于在InputStreamReader外面套一个
BufferedReader有异曲同工之妙..当然这个对可能不是很恰当..随便说说
Jzhgliu 2009-10-08
  • 打赏
  • 举报
回复
二楼的差不多是我要的,我举个例子,一个程序通过socket要输入数据,那就是两种情况:
1:DataInputStream(socket s.getInputStream())
2:BufferedReader(InputStreamReader(socket s.getInputStream()))
或者也可以这样:
3:BufferedInputStream(socket s.getInputStream())

我理解就这三种,第一种和第三种是以字节为基础的。第二种是转换为了字符,然后以字符为基础的。后两种都有一个挺好的方法:readLine(),第一种的readLine()过时了。
除此之外这三者还有什么区别呢?
实际使用的时候第一种和第二种好像没太大区别啊?

我菜鸟,烦请高人指点!
justinavril 2009-10-08
  • 打赏
  • 举报
回复
看一下API文档,我感觉就清楚了。
hardycheng 2009-10-08
  • 打赏
  • 举报
回复
------------------用于封装以字节为导向的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
rookie001 2009-10-08
  • 打赏
  • 举报
回复
前者有很多 按类型读写的方法,也有个readLine()方法,不过已经过时(deprecated)
后者是带缓冲区的,最喜欢的莫过于它的readLine()啦
nihuajie05 2009-10-08
  • 打赏
  • 举报
回复
4楼正解

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧