黑马程序员技术交流社区

标题: 关于复制图片的一个问题,求解 [打印本页]

作者: 敖东    时间: 2011-10-1 23:32
标题: 关于复制图片的一个问题,求解
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调试的
作者: 匿名    时间: 2011-10-2 03:35
把两个流打印出来,看名字是不是null
作者: 匿名    时间: 2011-10-2 08:29
byte[] buf=new byte[1024];
这个地方不用写1024,写成fis.available()试试
作者: 匿名    时间: 2011-10-2 10:26
确定下图片格式是否正确,一般情况下应该是****.jpg
作者: 匿名    时间: 2011-10-2 15:47
if(fis!=null)
                                        fis.close();
                        }
这句话有误。检查一下你的流是否为空。
作者: 匿名    时间: 2011-10-2 16:09
应该是后缀名写错了
作者: 匿名    时间: 2011-10-4 15:53
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-4 16:37
你自己不是写了异常处理么,dos下显示的就是说,你try{}里面的那些语句执行出现IO错误,应该是
fis=new FileInputStream("c:\\1.jpeg");
fos=new FileOutputStream("c:\\2.jpeg");
这2句出错




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