黑马程序员技术交流社区

标题: 这个异常是什么呀 [打印本页]

作者: 小洋人最happy    时间: 2012-12-5 15:32
标题: 这个异常是什么呀
/*
复制一个图片

思路:
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)


作者: 坚持远方    时间: 2012-12-5 15:52
刚才帮你试了下,应该是两种错误,要不是文件不存在,要不就是文件格式不对,你看一下吧
作者: 魏秀盛    时间: 2012-12-5 17:05
本帖最后由 魏秀盛 于 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. }

复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2