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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王飞 中级黑马   /  2012-12-25 18:50  /  1700 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王飞 于 2012-12-26 18:44 编辑



/*我是这样想的:既然存在转换流,那么将读取到的字节数据转换成字符串,然后在将读取到的字符串转换成字节数据写出去。这样就可以使用缓存技术提高效率了
*
* 1,大哥们能否实现啊?如果可以的话我哪地方有问题呀?
*
*  
* 2,我用下面的方式拷贝了图片,但是拷贝后的图片比原来的字节少,丢失了数据。损坏了---------这么解决这个问题呀?
*
*/


public class aaa {

        public static void main(String[] args) throws Exception{
                //将图片以字符的形式读取
                BufferedReader buff = new BufferedReader(new InputStreamReader(new FileInputStream("ss.jpg")));//读取图片
                BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("ss_copy.jpg")));//写入图片数据
                 
                String line=null;
                while((line=buff.readLine())!=null){
                        bufw.write(line);        //读取一行数据就将其写出去
                }
               
                buff.close();
                bufw.close();
        }

}

评分

参与人数 1技术分 +1 收起 理由
邵新瑜 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
http://blog.csdn.net/melearner/article/details/7036609
  1. @Test
  2.         public void test4() {
  3.                 /**
  4.                  * inputstream和outputstream复制一个照片
  5.                  */
  6.                 InputStream fis = null;
  7.                 OutputStream fos = null;
  8.                 try {
  9.                         /**
  10.                          * InputStream输入流 OutputStream输出流
  11.                          */
  12.                         fis = new FileInputStream("d:/0.jpg");
  13.                         fos = new FileOutputStream("d:/1.jpg");
  14.                         byte[] image = new byte[1024];
  15.                         int headread = 0;
  16.                         while ((headread = fis.read(image)) != -1) {
  17.                                 /**
  18.                                  * 写入文件
  19.                                  */
  20.                                 fos.write(image, 0, headread);
  21.                         }
  22.                 } catch (FileNotFoundException e) {
  23.                         e.printStackTrace();
  24.                 } catch (IOException e) {
  25.                         e.printStackTrace();
  26.                 } finally {
  27.                         /**
  28.                          * 关闭输入输出流
  29.                          */

  30.                         if (fis != null) {
  31.                                 try {
  32.                                         fis.close();
  33.                                 } catch (IOException e) {
  34.                                         e.printStackTrace();
  35.                                 }
  36.                         }
  37.                         if (fos != null) {
  38.                                 try {
  39.                                         fos.close();
  40.                                 } catch (IOException e) {
  41.                                         e.printStackTrace();
  42.                                 }
  43.                         }
  44.                 }
  45.         }
复制代码
图片是字节流读取的
回复 使用道具 举报
本帖最后由 L_trail 于 2012-12-25 21:54 编辑

1,同学不能的,你想啊,图片里面是字节流,你确用了一个字符流是接收,即使接收,有些能转换成功,但是还是会出现有转不了的,你运行过后对比两个文件大小,应该知道Copy后的图片会小好多。
2,但是你可以用字节流去copy文本文件
3,代码
       BufferedInputStream bis = new BufferedInputStream(new FileInputStream("ss.jpg"));
       BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("ss_copy.jpg"));
       byte[] by = new byte[1024];
       int len = 0;
       while ((len = bis.read(by)) !=-1) {
           bos.write(by,0,len);
           bos.flush();
       }  
       bis.close();
       bos.close();
回复 使用道具 举报
郭俊 发表于 2012-12-25 21:50
1,同学不能的,你想啊,图片里面是字节流,你确用了一个字符流是接收,即使接收,有些能转换成功,但是还 ...

帅哥,我知道字节流可以读取:P。
但是不是有转换流吗,我想用转换流然后一次读取一行数据,而字节流每次读取一个装到by中,我想直接读取一行数据然后在将这一行写入。现在看来行不通了。copy的数据确实比之前的少了些
还是谢谢你的回答:handshake
回复 使用道具 举报
yuchen208 发表于 2012-12-25 20:12
图片是字节流读取的

我明白,只是想试一下用转换流能否成功。看来行不通了
谢谢回答:handshake
回复 使用道具 举报
只能字节流转字符流:InputStreamReader  OutputStreamWriter
回复 使用道具 举报
字节流:处理二进制文件,或文本文档
字符流:只能处理文本文件
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马