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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐志海 中级黑马   /  2014-1-20 18:51  /  2006 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐志海 于 2014-1-20 20:08 编辑
  1. import java.io.*;


  2. public class impageDemo
  3. {
  4.         
  5.         public static void main(String[] args)
  6.         {
  7.                
  8.                 BufferedReader bfr=null;
  9.                 BufferedWriter bfw=null;
  10.                
  11.                 try
  12.                 {
  13.                         bfr=new BufferedReader(new InputStreamReader(new FileInputStream("g:\\11.jpg")));
  14.                         bfw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\copy.jpg")));
  15.                         String line=null;
  16.                         
  17.                         while((line=bfr.readLine())!=null)
  18.                         {
  19.                                 bfw.write(line);
  20.                                 bfw.flush();
  21.                         }
  22.                
  23.                         
  24.                 }
  25.                 catch(IOException e)
  26.                 {
  27.                         System.out.println(".........cuol ");
  28.                 }
  29.                 finally
  30.                 {
  31.                         try
  32.                         {
  33.                                 bfr.close();
  34.                         }
  35.                         catch(IOException e)
  36.                         {
  37.                                 
  38.                         }
  39.                         try
  40.                         {
  41.                                 bfw.close();
  42.                         }
  43.                         catch(IOException e)
  44.                         {
  45.                                 
  46.                         }
  47.                         
  48.                                 
  49.                         
  50.                 }
  51.         }
  52. }
复制代码
为什么复制的图片打不开。

3 个回复

正序浏览
末尾出是writer、reader的都是字符流,末尾处是OutputStream、InputStream的都是字节流,字符流不能操作图片数据,上面的哥们已近给出了代码
回复 使用道具 举报
因为不能用字符流处理媒体文件,像图片,电影等,媒体文件只用字节流复制,而字符流主要处理文本类数据。因为用字符流读一段数据,会去查编码表,如果对的上编码,则读取正确,否则会变成乱码,所以用字符流读取媒体文件会打不开。

代码改成这样既可:
  1. import java.io.*;


  2. public class impageDemo
  3. {
  4.         
  5.         public static void main(String[] args)
  6.         {
  7.                
  8.                 FileInputStream bfr=null;
  9.                 FileOutputStream bfw=null;
  10.                
  11.                 try
  12.                 {
  13.                         bfr=new FileInputStream("g:\\11.jpg");
  14.                         bfw=new FileOutputStream("D:\\copy.jpg");
  15.                        
  16.                         
  17.                        char[] ch=new char[1024];
  18.                                            int len=0;
  19.                                            while((len=fr.read(ch))!=-1)
  20.                                           {
  21.                                                 fw.write(ch,0,len);
  22.                                                 fw.flush();
  23.                                           }
  24.                
  25.                         
  26.                 }
  27.                 catch(IOException e)
  28.                 {
  29.                         System.out.println(".........cuol ");
  30.                 }
  31.                 finally
  32.                 {
  33.                         try
  34.                         {
  35.                                 bfr.close();
  36.                         }
  37.                         catch(IOException e)
  38.                         {
  39.                                 
  40.                         }
  41.                         try
  42.                         {
  43.                                 bfw.close();
  44.                         }
  45.                         catch(IOException e)
  46.                         {
  47.                                 
  48.                         }
  49.                         
  50.                                 
  51.                         
  52.                 }
  53.         }
  54. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

回复 使用道具 举报
呵呵 你这个复制用的是字符流 定义一个int len = -1; 然后读到len里面 然后读一次就写一个 就可以了 而不是line=null 如果是=null是读取字符的 要不=-1
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马