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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王宝龙 中级黑马   /  2012-9-21 20:16  /  1105 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王宝龙 于 2012-9-24 13:43 编辑

我用这个程序Copy了 一个图片,Copy成功了 但是被Copy的文件打不开,提示:文件已损坏或者已损毁。
这是怎么回事啊?难道图片需要更高级的复制方法吗?请高手指点!!!
  1. import java.io.*;

  2. class CopyText
  3. {
  4.         public static void main(String[] arge)
  5.         {
  6.                 copy_1();
  7.         }
  8.         public static void copy_1()
  9.         {
  10.                 FileWriter fw = null;
  11.                 FileReader fr = null;
  12.                
  13.                 //int ch = 0;
  14.                 char[] ch = new char[1024];
  15.                 int len = 0;

  16.                 try
  17.                 {
  18.                         fw = new FileWriter("3_copy.jpg");
  19.                         fr = new FileReader("F:\\图片\\ps\\3.jpg");
  20.                         while((len=fr.read(ch))!=-1)
  21.                         {
  22.                                 fw.write(ch,0,len);
  23.                         }
  24.                 }
  25.                
  26.                 catch(IOException e)
  27.                 {
  28.                         System.out.println(e.toString());
  29.                 }
  30.                 finally
  31.                 {
  32.                         try
  33.                         {
  34.                                 fw.close();        
  35.                                 fr.close();
  36.                         }
  37.                         catch(IOException e)
  38.                         {
  39.                                 System.out.println(e.toString());
  40.                         }
  41.                 }
  42.                
  43.                
  44.                
  45.         }
  46. }
复制代码

1 个回复

倒序浏览
本帖最后由 彭润生 于 2012-9-21 20:31 编辑

import java.io.*;
class CopyText
{
        public static void main(String[] arge)
        {
                copy_1();
        }
        public static void copy_1()
        {
                FileWriter fw = null;//大哥,你这个流用的不对,这个writer和reader专门是用于字符流的操作,也就是文本类型的文件。
//换成这样就可以了  FileInputStream fis = null;FileOutputStream fos = null;

                FileReader fr = null;
               
                //int ch = 0;
                char[] ch = new char[1024];
               
                try
                {
//fis = new FileInputStream("文件");     byte[] buf = new byte[1024];     int len = 0;    fos = new FileOutputStream("目的");   
//while((len = fis.read(buf))){fos.write(buf,0,len);}
                        fw = new FileWriter("3_copy.jpg");
                        fr = new FileReader("F:\\图片\\ps\\3.jpg");
                        while((fr.read(ch))!=-1)
                        {
                                fw.write(ch);
                        }
                }
               
                catch(IOException e)
                {
                        System.out.println(e.toString());
                }
                finally
                {
                        try
                        {
                                fw.close();     //关流的时候要加个判断,如果本来文件就为null;这儿也会抛异常  if(fis =null){****} 这样写比较好  
                                fr.close();
                        }
                        catch(IOException e)
                        {
                                System.out.println(e.toString());
                        }
                }
               
               
               
        }
}
//字符流是专门操作文本文件的,字节流是操作文件的,总体来说,字符流是专门为操作文本的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马