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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小洋人最happy 中级黑马   /  2012-12-5 15:32  /  1002 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
复制一个图片

思路:
1. 用字节读取流对象和图片关联
2.用字节写入流对象创建一个图片文件,用于存储获取到的图片数据
3. 通过循环读写,完成数据的存储
4.关闭资源
*/
import java.io.*;
class  CopyPic
{
public static void main(String[] args)
{
  FileOutputStream fos = null;
  FileInputStream fis = null;
  try
  {
   fos = new FileOutputStream("c:\\2.jpeg");
   fis = new FileInputStream("c:\\1.jpeg");
   byte[] buf = new byte[1024];
   int len =0;
   while ((len=fis.read(buf))!=-1)
   {
    fos.write(buf,0,len);
   
   }

  }
  catch (IOException e)
  {
   throw new RuntimeException("复制文件失败");
  }
  finally
  {
   try
   {
    if(fis!=null)
     fis.close();
   }
   catch (IOException e)
   {
    throw new RuntimeException("cuowu");
   }
   try
   {
    if(fos!=null)
     fos.close();
   }
   catch (IOException e)
   {
    throw new RuntimeException("cuowu");
   }
  }
}
}

E:\java\Java1111\day19>java CopyPic
Exception in thread "main" java.lang.RuntimeException: 复制文件失败
        at CopyPic.main(CopyPic.java:32)

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
刚才帮你试了下,应该是两种错误,要不是文件不存在,要不就是文件格式不对,你看一下吧
回复 使用道具 举报
本帖最后由 魏秀盛 于 2012-12-5 17:10 编辑

我测试下,我C盘下面有一个NBA.jpg图片文件,我编译运行之后,错误日志打印输出到一个文件中,日志文件内容如下:
2012-12-05 16:57:38
java.io.FileNotFoundException: c:\NBA.jpeg (The system cannot find the file specified)
提示文件找不到
可能是你C盘下的图片文件是1.jpg,后缀名是jpg,而你代码中写的是1.jpeg,后缀名是jpeg
你把代码中的1.jpeg改为1.jpg之后再编译运行应该可以解决这个错误
推荐把错误日志打印到一个日志文件中,有助于你快速找寻问题,具体请参照毕老师的io视频中的异常日志信息部分;

  1.        
  2. /*
  3. 复制一个图片
  4. 思路:
  5. 1. 用字节读取流对象和图片关联
  6. 2.用字节写入流对象创建一个图片文件,用于存储获取到的图片数据
  7. 3. 通过循环读写,完成数据的存储
  8. 4.关闭资源
  9. */
  10. import java.io.*;
  11. import java.util.*;
  12. import java.text.*;
  13. class  CopyPic2
  14. {
  15. public static void main(String[] args) throws Exception
  16. {
  17.   FileOutputStream fos = null;
  18.   FileInputStream fis = null;
  19.   try
  20.   {
  21.    fos = new FileOutputStream("c:\\2.jpg");
  22.    fis = new FileInputStream("c:\\NBA.jpg");
  23.    byte[] buf = new byte[1024];
  24.    int len =0;
  25.    while ((len=fis.read(buf))!=-1)
  26.    {
  27.     fos.write(buf,0,len);
  28.    
  29.    }
  30.   }
  31.   catch (IOException e)
  32.   {
  33.           Date d=new Date();
  34.           SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  35.           String s=sdf.format(d);
  36.       PrintStream ps=new PrintStream("error.log");
  37.           ps.println(s);
  38.           System.setOut(ps);
  39.           e.printStackTrace(System.out);
  40.   }
  41.   finally
  42.   {
  43.    try
  44.    {
  45.     if(fis!=null)
  46.      fis.close();
  47.    }
  48.    catch (IOException e)
  49.    {
  50.     throw new RuntimeException("cuowu");
  51.    }
  52.    try
  53.    {
  54.     if(fos!=null)
  55.      fos.close();
  56.    }
  57.    catch (IOException e)
  58.    {
  59.     throw new RuntimeException("cuowu");
  60.    }
  61.   }
  62. }
  63. }

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