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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘茂林 高级黑马   /  2013-5-19 11:52  /  1140 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘茂林 于 2013-5-19 14:54 编辑
  1. import java.io.*;
  2. import java.lang.*;

  3. public class Copypic
  4. {
  5.     public static void main(String[] args)
  6.     {
  7.         FileInputStream fis = null;
  8.         FileOutputStream fos = null;
  9.         try
  10.         {
  11.             fis = new FileInputStream("test.jpg");

  12.             fos = new FileOutputStream("copy.jpg");

  13.             byte[] buf = new byte[1024 * 5];

  14.             int len = 0;
  15.             while ((len = fis.read(buf)) != 0)
  16.             {
  17.                 fos.write(buf, 0, len);
  18.             }

  19.         } catch (IOException e)
  20.         {
  21.             System.out.print("复制文件失败" + e.toString());
  22.         }

  23.         finally
  24.         {
  25.             if (fis != null)
  26.             {
  27.                 try
  28.                 {
  29.                     fis.close();
  30.                 } catch (IOException e)
  31.                 {
  32.                     System.out.println("读取关闭失败"+e.toString());
  33.                 }
  34.             }
  35.             if (fos != null)
  36.             {
  37.                 try
  38.                 {
  39.                     fos.close();
  40.                 } catch (IOException e)
  41.                 {
  42.                     System.out.println("读取关闭失败"+e.toString());
  43.                 }
  44.             }
  45.         }

  46.        
  47.     }
复制代码
不知道怎么回事,运行的时候出现数组越界,但实际上复制成功了 求解答??

3 个回复

倒序浏览
本帖最后由 逸盏清茶 于 2013-5-19 12:51 编辑

最后少个大括号   while ((len = fis.read(buf)) != 0)    !=-1
回复 使用道具 举报
你的while循环有错误,读到文件末尾的时候返回的是-1,而不是0.所以应该为
while ((len = fis.read(buf)) != -1)

            {

                fos.write(buf, 0, len);

            }

回复 使用道具 举报
王盟盟 发表于 2013-5-19 12:48
你的while循环有错误,读到文件末尾的时候返回的是-1,而不是0.所以应该为
while ((len = fis.read(buf)) ! ...

多谢。。汗 犯了简单错误
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马