A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡刚涛 中级黑马   /  2012-8-17 22:53  /  1161 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在cope图片的过程中应该用到字节流,但是在字符流的子类存在两个子类InputStreamReader类将字节流转换成字符流和OutputStreamWriter类字符流通向字节流的桥梁。所以写了如下代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class PictureCope {
/**
  * @param args
  */
public static void main(String[] args)throws IOException {
  // TODO Auto-generated method stub
  OutputStream ops=new FileOutputStream("d:\\34cope.jpg");
  InputStream ins=new FileInputStream("d:\\34.jpg");
  BufferedReader bur=new BufferedReader(new InputStreamReader(ins));//将字节流转换成字符流
  BufferedWriter buw=new BufferedWriter(new OutputStreamWriter(ops));//再将字符流转换成字节流
  String len=null;
  while((len=bur.readLine())!=null){
   buw.write(len);
   buw.newLine();
   buw.flush();
  }
  ops.close();
  ins.close();
}
我的思路是先将字节的转换成字符再转回来,这样不就可以用字符流来拷贝图片,同时用到缓冲区加快复制的效率,为什么的得到图片不一样,
他们转换不都是运用默认的一套编码表吗?哪到不是同一编码表,还是别的原因?求解释一下!!!

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
BufferedWriter buw=new BufferedWriter(new OutputStreamWriter(ops));//再将字符流转换成字节流
这句没有将字符流转换成字节流吧,只是与Input对应的缓冲字符流

而且图片是以2进制码形式存储的,字符流没法正常实现读取和存储

只有当已知数据属于字符流的时候,才用InputStreamReader和OutputStreamWriter来转换,完成高效率的读写

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马