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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 敖东 黑马帝   /  2011-10-1 23:32  /  2069 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
class CopyPic
{
        public static void main(String[] args)
        {
                FileInputStream fis=null;
                FileOutputStream fos=null;
                try
                {
                        fis=new FileInputStream("c:\\1.jpeg");
                        fos=new FileOutputStream("c:\\2.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("提取图片失败");
                        }
                        try
                        {
                                if(fos!=null)
                                        fos.close();
                        }
                        catch (IOException e)
                        {
                                throw new RuntimeException("写入图片失败");
                        }


                }
        }
}


运行时抛出异常

Exception in thread "main" java.lang.RuntimeException: 复制图片失败
        at CopyPic.main(CopyPic.java:25)

什么问题? 用dos调试的

评分

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

查看全部评分

8 个回复

正序浏览
黑马网友  发表于 2011-10-4 16:37:02
8#
你自己不是写了异常处理么,dos下显示的就是说,你try{}里面的那些语句执行出现IO错误,应该是
fis=new FileInputStream("c:\\1.jpeg");
fos=new FileOutputStream("c:\\2.jpeg");
这2句出错
回复 使用道具 举报
黑马网友  发表于 2011-10-4 15:53:31
7#
import java.io.*;
class CopyPic
{
        public static void main(String[] args) throws Exception
        {
                FileInputStream fis=null;
                FileOutputStream fos=null;
                System.out.println("A");
                               fis=new FileInputStream("c:\\1.jpeg");
                        fos=new FileOutputStream("c:\\2.jpeg");
                        System.out.println("B");
                        byte[] buf=new byte[1024];
                        int len=0;
                        while((len=fis.read(buf))!=-1)
                        {
                                fos.write(buf,0,len);
                        }
                        System.out.println("C");

               
                fis.close();
                fos.close();
        }
}
经测试 发现只有A被打印了出来 所以应该是
fis=new FileInputStream("c:\\1.jpeg");
fos=new FileOutputStream("c:\\2.jpeg");
这段代码出现错误 所以应该是文件没有这个文件 或者文件的后缀名错误
回复 使用道具 举报
黑马网友  发表于 2011-10-2 16:09:51
地板
应该是后缀名写错了
回复 使用道具 举报
黑马网友  发表于 2011-10-2 15:47:28
报纸
if(fis!=null)
                                        fis.close();
                        }
这句话有误。检查一下你的流是否为空。
回复 使用道具 举报
黑马网友  发表于 2011-10-2 10:26:47
板凳
确定下图片格式是否正确,一般情况下应该是****.jpg

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-10-2 08:29:44
藤椅
byte[] buf=new byte[1024];
这个地方不用写1024,写成fis.available()试试

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-10-2 03:35:41
沙发
把两个流打印出来,看名字是不是null
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马