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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘俊佳 于 2012-7-13 18:00 编辑

这是代码:

package practice;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class CopyPic {
        public static void main(String[] args) {
                FileOutputStream fos = null;
                FileInputStream fis = null;
                try {
                        fos = new FileOutputStream("c:\\2.bmp");
                        fis = new FileInputStream("c:\\1.bmp");
                        
                        byte[] buf=new byte[1024];
                        
                        int len=0;
                        while((len=fis.read(buf))!=-1)
                        {
                                fos.write(buf,0,len);
                        }

                } catch (Exception e) {
                        throw new RuntimeException("复制文件失败");
                }
                finally
                {
                        try
                        {
                                if(fis!=null)
                                        fis.close();
                        }
                        catch(Exception e)
                        {
                                throw new RuntimeException("读取关闭失败");
                        }
                        try
                        {
                                if(fos!=null)
                                        fos.close();
                        }
                        catch(Exception e)
                        {
                                throw new RuntimeException("写入关闭失败");        
                        }
                }
        }

}
然后我编译运行报错了:

Exception in thread "main" java.lang.RuntimeException: 复制文件失败
        at practice.CopyPic.main(CopyPic.java:23)
这是什么原因,我看代码并没有错啊,晕

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

14 个回复

倒序浏览
楼主  我用你的代码运算了一下,我以为是你的包名错误了 ,你试着查看该package下是否有该文件。
要不然就是你图片路径或名称有问题 我能找到的就这两个问题了。
回复 使用道具 举报
你的C盘下没有1.bmp吧?我把代码复制下来执行了一下,是没有问题的,你检查下你C盘下是否有要被复制的文件以及文件名是否和程序中一致吧!
回复 使用道具 举报
王宝康 发表于 2012-7-12 17:48
你的C盘下没有1.bmp吧?我把代码复制下来执行了一下,是没有问题的,你检查下你C盘下是否有要被复制的文件 ...

我C盘下有图片的并且图片的文件名是1.bmp
回复 使用道具 举报
杨康 发表于 2012-7-12 17:46
楼主  我用你的代码运算了一下,我以为是你的包名错误了 ,你试着查看该package下是否有该文件。
要不然就 ...

图片路径和文件名是对的,你说package下面是否有这个图片文件? 是不是要把图片放到myeclipse的某个目录下?
回复 使用道具 举报
代码没问题。抛出异常正好说明你的try{ }有问题,是不是文件错误,并没有这两个图片?
回复 使用道具 举报
杨康 中级黑马 2012-7-12 17:54:34
7#
刘俊佳 发表于 2012-7-12 17:52
图片路径和文件名是对的,你说package下面是否有这个图片文件? 是不是要把图片放到myeclipse的某个目录 ...

图片只要在c盘下就没问题,但是我因为没做包,将你第一行代码删除后,程序能够顺利执行。
你如果说图片的路径没问题的话,我只能联想到你的文件路径是否正确了
回复 使用道具 举报
杨康 发表于 2012-7-12 17:54
图片只要在c盘下就没问题,但是我因为没做包,将你第一行代码删除后,程序能够顺利执行。
你如果说图片的 ...

文件路径是否正确?什么意思? 没听懂
回复 使用道具 举报
代码运行正常,可以复制………… 估计你确实是没有 输入文件

调试时最好把异常信息打印出来  throw new RuntimeException("复制文件失败");
象你这样封装后 就不知道具体的出错信息了
先用 System.out.println(e) 打印调试以下吧
回复 使用道具 举报
刘俊佳 发表于 2012-7-12 17:50
我C盘下有图片的并且图片的文件名是1.bmp
  1. package practice;

  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;

  4. public class CopyPic {
  5. public static void main(String[] args) {
  6. FileOutputStream fos = null;
  7. FileInputStream fis = null;
  8. try {
  9. fos = new FileOutputStream("c:\\2.bmp");
  10. fis = new FileInputStream("c:\\1.bmp");

  11. byte[] buf=new byte[1024];

  12. int len=0;
  13. while((len=fis.read(buf))!=-1)
  14. {
  15. fos.write(buf,0,len);
  16. }

  17. } catch (Exception e) {
  18. throw new RuntimeException("复制文件失败");
  19. }
  20. finally
  21. {
  22. try
  23. {
  24. if(fis!=null)
  25. fis.close();
  26. }
  27. catch(Exception e)
  28. {
  29. throw new RuntimeException("读取关闭失败");
  30. }
  31. try
  32. {
  33. if(fos!=null)
  34. fos.close();
  35. }
  36. catch(Exception e)
  37. {
  38. throw new RuntimeException("写入关闭失败");
  39. }
  40. }
  41. }
  42. }
复制代码
你的代码,我C盘下运行前后的截图:

未命名.jpg (42.79 KB, 下载次数: 30)

运行前

运行前

未命名.jpg (57.66 KB, 下载次数: 43)

运行后

运行后
回复 使用道具 举报
王宝康 发表于 2012-7-12 17:48
你的C盘下没有1.bmp吧?我把代码复制下来执行了一下,是没有问题的,你检查下你C盘下是否有要被复制的文件 ...

有文件的

8O]IO~J)L)U%T35M{D8EMUE.jpg (42.91 KB, 下载次数: 48)

C盘有图片文件1.bmp的

C盘有图片文件1.bmp的
回复 使用道具 举报
王宝康 发表于 2012-7-12 18:00
你的代码,我C盘下运行前后的截图:

但为什么我的就报错?应该不是大妈的问题
回复 使用道具 举报
刘俊佳 发表于 2012-7-12 18:04
但为什么我的就报错?应该不是大妈的问题

应该不是代码的问题
回复 使用道具 举报
本帖最后由 刘俊佳 于 2012-7-12 19:01 编辑

我照着毕老师然后用管理员的身份运行DOS命令编译竟然成功了,就是我想问为什么我用MyEclipse直接编译为什么就报错呢?是不是要取得管理员权限以后就可以正常编译了呢?

(YCOKJXBSVFHINC[_O([@88.jpg (39.38 KB, 下载次数: 37)

以管理员身份运行的DOS命令编译

以管理员身份运行的DOS命令编译

]XR]3L[F8EDIXMD527P}5%8.jpg (56.42 KB, 下载次数: 34)

复制图片成功了!

复制图片成功了!

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1 不错,恭喜你,继续给你一分

查看全部评分

回复 使用道具 举报
刘俊佳 发表于 2012-7-12 18:57
我照着毕老师然后用管理员的身份运行DOS命令编译竟然成功了,就是我想问为什么我用MyEclipse直接编译为什么 ...

呵呵  最主要是问题解决了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马