黑马程序员技术交流社区

标题: 求解:为什么程序运行会失败 [打印本页]

作者: ㄗ灬Night|K    时间: 2013-10-4 12:56
标题: 求解:为什么程序运行会失败
本帖最后由 ㄗ灬Night|K 于 2013-10-4 14:21 编辑

为什么程序在编译时OK,运行时却显示“复制失败”呢?
  1. //复制一张图片
  2. import java.io.*;
  3. class  CopyPic
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 FileInputStream fis = null;
  8.                 FileOutputStream fos = null;

  9.                

  10.                 try
  11.                 {
  12.                         fis = new FileInputStream("C:\\111");
  13.                         fos = new FileOutputStream("C:\\222");
  14.                         byte[] by = new byte[1024];
  15.                         int num = 0;
  16.                         while ((num = fis.read(by))!=-1)
  17.                         {
  18.                                 fos.write(by,0,num);
  19.                         }
  20.                 }
  21.                 catch (IOException e)
  22.                 {
  23.                         throw new RuntimeException("复制失败");
  24.                 }
  25.                         finally
  26.                         {        
  27.                                 try
  28.                                 {
  29.                                         if (fis!=null)
  30.                                                 fis.close();
  31.                                 }
  32.                                 catch (IOException e)
  33.                                 {
  34.                                         throw new RuntimeException("读取关闭出错");
  35.                                 }
  36.                                         try
  37.                                         {
  38.                                                 if (fos!=null)
  39.                                                 fos.close();
  40.                                         }
  41.                                         catch (IOException e)
  42.                                 {
  43.                                         throw new RuntimeException("写入关闭出错");
  44.                                 }

  45.                         }
  46.         }
  47. }
复制代码

1.jpg (19.87 KB, 下载次数: 39)

1.jpg

2.jpg (39.98 KB, 下载次数: 43)

c盘中的图片

c盘中的图片

作者: lizhangzhi    时间: 2013-10-4 13:10
fis = new FileInputStream("C:\\111");
                        fos = new FileOutputStream("C:\\222");
用流操作文件,文件名字得加扩展名,名称不完整就找不到指定文件,抛异常
作者: 吴清源    时间: 2013-10-4 13:39
你没把图片的后缀名加上,所以发生了IO异常
fis = new FileInputStream("C:\\111");  //111.jpg或111.PNG,加上你复制的图片后缀名试试看
还有就是win7系统下如果对C盘内的文件进行拷贝好像会出错(xp的我就不清楚),应该是系统盘操作权限不够,换成fis = new FileInputStream("D:\\111.PNG");后我这边就可以复制了。
作者: 摄影勾魂    时间: 2013-10-4 14:01
楼上正解,已验证。
1.没加后缀名是一个问题。
2.路径为Win7系统的C盘也会失败,改其他盘就好
作者: 麦子    时间: 2013-10-4 14:23
楼上正解,在windows系统中区分两个文件的属性有两个,一个是文件名,另一个是文件拓展名,你这样写是不规范的

我给你大白话翻译:如果该目录下有两个文件名都是111,而这两个文件的后缀名不相同,windows文件系统认为这两个文件是不同的文件,而虚拟在扫描这个文件目录时,它就要抱异常了,因为它不知道要拿哪个文件,而你又抛了个RuntimeException,那程序铁定中断了




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