Reader与Writer、InputStream与OutputStream之间怎样转换?

深夜代码党 2011-03-15 11:48:28
比如我用输入流在一个地方读取了数据,怎样把这个数据通过输出流写到别的地方?
如果我是读写文件,那么之间是用string对象作为中介吗?
如果读写图片呢?
求详解!希望又例子~reader转成writer还有inputstream转成outputstream最好都要哦~
...全文
1081 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
firstDemo 2011-03-18
  • 打赏
  • 举报
回复
你可能对于文件的组成理解有点乱,
文件由文本文件和非文本文件之分
1:文本文件
是指直接用记事本打开就可以看的那种
2:非文本文件
是指比如视频,音频,图片之类的

java中IO就是处理文件读和写,简单点理解
因为文件有2种类型,
所以读写就需要区别对待

凡是stream结尾的都可以读所有类型的文件
凡是read结尾的只能读文本类型的文件

io流所有的父类是2个:
inputstream 和 outputstream

其他所有的流都是在这个基础上包装起来的

你说的reader 转writer 之类的是不可能的,读就是读,writer就是writer
除非用NIO的缓冲区
焙焙龙 2011-03-18
  • 打赏
  • 举报
回复
用管道流来处理
  • 打赏
  • 举报
回复
一般的用BufferedInputStream和BufferedOutputStream来实现

因为图片用字节来
ansensp 2011-03-15
  • 打赏
  • 举报
回复
"视频啊、图像啊、音频啊" 这些都是基于二进制的流, 不能用writer, 因为writer是面向字符的流, 你需要使用DataInputStream 与 DataOutputStream 进行读入与写出操作
注意 DataInputStream 与 DataOutputStream 一定要成对使用


代码大致上是这个样子:
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(文件路径)));
byte[] bs = new byte[in.available()];
in.read(bs);
in.close();

DataOutputStream os = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(文件输出路径)));
os.write(bs);
os.flush();
os.close();
深夜代码党 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hudie1234567 的回复:]

InputStreamReader和OutputStreamWriter是字符流转向字节流的桥梁,具体见API!
[/Quote]

这个我当然知道,我说的是比如我用输入流读取了视频啊、图像啊、音频啊、文本啊之类的文件,那么怎样用输出流写出啊,也就是说输入流与输出流之间的桥梁是什么?
茫茫大海 2011-03-15
  • 打赏
  • 举报
回复
InputStreamReader和OutputStreamWriter是字符流转向字节流的桥梁,具体见API!
zhouYunan2010 2011-03-15
  • 打赏
  • 举报
回复
1楼说反了
Ganymede 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 frankie0616 的回复:]

引用 1 楼 hudie1234567 的回复:

InputStreamReader和OutputStreamWriter是字符流转向字节流的桥梁,具体见API!


这个我当然知道,我说的是比如我用输入流读取了视频啊、图像啊、音频啊、文本啊之类的文件,那么怎样用输出流写出啊,也就是说输入流与输出流之间的桥梁是什么?
[/Quote]
桥梁就是数组,因为你读取大文件的时候 基本上都是通过读取文件的字节,然后一般会有个byte的数组,进行转储。一般的流程就是将文件读入到数组,然后再将数组中的内容读出。

62,615

社区成员

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

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