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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Running 中级黑马   /  2014-6-18 22:38  /  811 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
class CopyPic
{
    public static void main(String[] args)
   {
    FileOutputStream fos=null;
    FileInputStream  fis=null;
    try
   {
       fos=new  FileOutputStream ("c:\\2.bpm");
        fis=new  FileInputStream ("c:\\1.bpm");
       byte[]  buf=new  byte[1024];
        int len=0;
       while((len=fis.read(buf))!=-1)   //这里的len存的是数组的角标吗??
      {
          fos.write(buf,0,len);
       }   
    }   
        catch(IOException  e)
      {
            throw  new  RuntimeException("复制文件失败");
      }
      finally
     {
          try
            {
                  if(fis!=null)             //这个条件是什么意思?为什么在这个条件下要关资源呢??
                          fis.close();
            }
           catch(IOException  e)
      {
            throw  new  RuntimeException("读取文件失败");
      }

     }

   }
  }
请各位就程序中注释的问题给予指导,谢谢。























评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

3 个回复

倒序浏览
len:表示fis一次读入到数组buf中的字节数
关于进行判断 if(fis!=null)  ,是因为该语句是在finally中,是必须要执行的代码,
如果在 fis=new  FileInputStream ("c:\\1.bpm");中出现FileNotFoundException异常,则fis创建不成功,在这种情况下就不需要关闭fis

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
ゞ导火索゛ 发表于 2014-6-18 22:49
len:表示fis一次读入到数组buf中的字节数
关于进行判断 if(fis!=null)  ,是因为该语句是在finally中,是必 ...

明白了,谢谢。。
回复 使用道具 举报

1,len中储存数组buf中的元素个数。当读到数组尾端会返回-1.
2, if(fis!=null)   因为如果fis.输入流没有被创建成功,就不需要被关闭。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马