BufferedOutputStream代替DataOutputStream?

jdgdf566 2013-11-14 12:04:30
在需求的功能相同,都具有的情况下。例如只比较这两个方法:
BufferedOutputStream的 void write(byte[] b, int off, int len)
代替
DataOutputStream的 void write(byte[] b, int off, int len)
怎么样?前者效率更高?
有人说BufferedOutputStream的 void write(byte[] b, int off, int len)传输二进制文件的时候与前者不一样,会出错。是吗?
...全文
269 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdgdf566 2013-11-14
  • 打赏
  • 举报
回复
引用 4 楼 soton_dolphin 的回复:
一般都是用bufferedoutputstream去创建dataoutputstream



    DataOutputStream out2 = 
    new DataOutputStream( 
    new BufferedOutputStream(new FileOutputStream("Data.txt"))
    );

如果你不是特别需要写INT, DOUBLE之类的数据,可以直接用BUFFEREDOUTPUTSTREAM

引用 6 楼 qq331077064 的回复:
BufferedOutputStream只是把你要写的自动flush,另一个你要显示提交flush,还有DataOutputStream主要是用于将基本 Java 数据类型写入输出流中,简单的byte类型用原始的outputstream就够了
测试了下,发现 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path)); for (int i=0;i<1000;i++) { int b = bis.read(); } 如果i比较大的话,仍然非常占用系统资源,非常慢。那么BufferedInputStream没有缓冲效果啊。
jdgdf566 2013-11-14
  • 打赏
  • 举报
回复
引用 4 楼 soton_dolphin 的回复:
一般都是用bufferedoutputstream去创建dataoutputstream



    DataOutputStream out2 = 
    new DataOutputStream( 
    new BufferedOutputStream(new FileOutputStream("Data.txt"))
    );

如果你不是特别需要写INT, DOUBLE之类的数据,可以直接用BUFFEREDOUTPUTSTREAM

那么如果对于文本数据,我这样写没有问题吧:

BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(os, charsetName));
也就是用OutputStreamWriter去创建BufferedWriter
郑涛 2013-11-14
  • 打赏
  • 举报
回复
BufferedOutputStream只是把你要写的自动flush,另一个你要显示提交flush,还有DataOutputStream主要是用于将基本 Java 数据类型写入输出流中,简单的byte类型用原始的outputstream就够了
Jachon 2013-11-14
  • 打赏
  • 举报
回复
引用 3 楼 jdgdf566 的回复:
引用 2 楼 codeshine 的回复:
buffer是字符流 data是字节流..前者涉及编码..后者无编码干扰
BufferedOutputStream类里面没有涉及字符集的地方啊
看错了..刚写代码在用bufferedreader看混了..前者是有缓存..可以数据通过mark和reset重置数据操作..后者不可..感觉速度应该是差不多..这个没研究过..观望大神出现...
soton_dolphin 2013-11-14
  • 打赏
  • 举报
回复
一般都是用bufferedoutputstream去创建dataoutputstream



    DataOutputStream out2 = 
    new DataOutputStream( 
    new BufferedOutputStream(new FileOutputStream("Data.txt"))
    );

如果你不是特别需要写INT, DOUBLE之类的数据,可以直接用BUFFEREDOUTPUTSTREAM

jdgdf566 2013-11-14
  • 打赏
  • 举报
回复
引用 2 楼 codeshine 的回复:
buffer是字符流 data是字节流..前者涉及编码..后者无编码干扰
BufferedOutputStream类里面没有涉及字符集的地方啊
Jachon 2013-11-14
  • 打赏
  • 举报
回复
buffer是字符流 data是字节流..前者涉及编码..后者无编码干扰
tony4geek 2013-11-14
  • 打赏
  • 举报
回复
BufferedOutputStream 好像高一点。

62,615

社区成员

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

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