黑马程序员技术交流社区

标题: 复制图片,这样写哪错了 [打印本页]

作者: 刘家斌    时间: 2014-10-22 20:20
标题: 复制图片,这样写哪错了
本帖最后由 刘家斌 于 2014-10-22 22:13 编辑

如题,这样怎么不行?
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 FileInputStream fis=null;
  6.                 FileOutputStream fos=null;
  7.                 try
  8.                 {
  9.                         fis=new FileInputStream("F:\\Output.JPG");
  10.                         fos=new FileOutputStream("F:\\In.JPG");
  11.    
  12.                         int num=0;
  13.                         while((num=fis.read())!=-1)
  14.                                 fos.write(num);
  15.                 }
  16.                 catch (IOException e)
  17.                 {
  18.                         throw new RuntimeException("复制失败");
  19.                 }
  20.                 finally
  21.                 {
  22.                         try
  23.                         {
  24.                                 if(fis!=null)
  25.                                         fis.close();
  26.                         }
  27.                         catch (IOException e)
  28.                         {
  29.                                 throw new RuntimeException("关闭输入流失败");
  30.                         }
  31.                         finally
  32.                         {
  33.                                 try
  34.                                 {
  35.                                         if(fos!=null)
  36.                                         fos.close();

  37.                                 }
  38.                                 catch (IOException i)
  39.                                 {
  40.                                         throw new RuntimeException("关闭输出流失败");
  41.                                 }

  42.                         }
  43.                 }
  44.         }
  45. }
复制代码


作者: 森屿北巷    时间: 2014-10-22 21:00
测试一下可以复制啊。楼主是不是没有导包。总之我成功了
作者: 刘家斌    时间: 2014-10-22 21:08
森屿北巷 发表于 2014-10-22 21:00
测试一下可以复制啊。楼主是不是没有导包。总之我成功了

不知道啊,我没有成功,难道是电脑问题?奇怪。。。
作者: 会飞的蜗牛    时间: 2014-10-22 21:17
可以复制成功,但是有个小问题。
while((num=fis.read())!=-1)
          fos.write((byte)num);
你前面定义了byte数组,这儿就要用吗,要不复制的效率太低了。
while((num=fis.read(b))!=-1)
          fos.write(b);
作者: 香草芭芙    时间: 2014-10-22 21:42
  1. fis = new FileInputStream("E:\\Output.JPG"); //问题可能出在文件名, 你仔细看看你的盘目录下是否有
  2.                         fos = new FileOutputStream("E:\\In.JPG");//Output.JPG
  3.                         byte[] b = new byte[1024];//定义缓冲区没有使用.
  4.                         int num = 0;
  5.                         while ((num = fis.read()) != -1)
  6.                                 fos.write((byte) num); //int为什么要转byte? 32位数据转成 8位数据,太危险了吧.
复制代码

作者: 刘家斌    时间: 2014-10-22 22:12
香草芭芙 发表于 2014-10-22 21:42

不是这个,我刚开始没转,后来不行才试着改的,还是不行
作者: Chopper    时间: 2014-10-23 14:56
文件名正确吗?
作者: EDDY_Liang    时间: 2014-10-23 16:04
很正常。。我之前有个服务端和客户端的上传文件也是你这样。。在自己的eclipse上报错,在别人那别试一下就没事
作者: chen578157939    时间: 2014-10-23 19:00
import java.io.*;
作者: 刘家斌    时间: 2014-10-24 09:24
EDDY_Liang 发表于 2014-10-23 16:04
很正常。。我之前有个服务端和客户端的上传文件也是你这样。。在自己的eclipse上报错,在别人那别试一下就 ...

嗯,谢谢了




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