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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一:缓冲输入输出流(InputStream、OutputStream)[java] view plain copy
print?


  • /*
  •      *缓冲输入输出流方式复制文件  
  •      */  
  •     public static boolean copyFile(String srcFileName,String destFileName,boolean overlay){  
  •             File srcFile = new File(srcFileName); //根据一个路径得到File对象  
  •             //判断源文件是否存在  
  •             if(!srcFile.exists()){  
  •                 try{  
  •                     throw new Exception("源文件:"+srcFileName+"不存在!");  
  •                 }catch(Exception e){  
  •                     e.printStackTrace();//将异常内容存到日志文件中  
  •                 }  
  •                 return false;  
  •             }else if(!srcFile.isFile()){//判断是不是一个文件  
  •                 try {  
  •                     throw new Exception("复制文件失败,源文件:"+srcFileName+"不是一个文件!");  
  •                 } catch (Exception e) {  
  •                   
  •                     e.printStackTrace();  
  •                 }  
  •                 return false;  
  •                   
  •             }  
  •             //判断目标文件是否存在  
  •             File destFile = new File(destFileName);//目标文件对象destFile  
  •             if(destFile.exists()){  
  •                 //如果目标文件存在并允许覆盖  
  •                 if(overlay){  
  •                     //删除已经存在的目标文件  
  •                     new File(destFileName).delete();  
  •                      
  •                 }  
  •             }else{  
  •                 //如果目标文件所在目录不存在,则创建 目录  
  •                 if(!destFile.getParentFile().exists()){  
  •                     //目标文件所在目录不存在  
  •                     //mkdirs():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录  
  •                     if(!destFile.getParentFile().mkdirs()){  
  •                         //复制文件失败:创建目标文件所在目录失败  
  •                         return false;  
  •                     }  
  •                 }  
  •             }  
  •               
  •             //复制文件  
  •             int byteread = 0;//读取的字节数  
  •             InputStream  in = null;  
  •             OutputStream  out = null;  
  •               
  •             try {  
  •                 in  = new FileInputStream(srcFile);  
  •                 out = new FileOutputStream(destFile);  
  •                 byte[] buffer = new byte[1024];  
  •                 /*
  •                  * 方法说明:
  •                  * ①:将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
  •                  *      write(byte[] b, int off, int len)  
  •                  *          b - 数据
  •                  *          off - 数据中的起始偏移量。
  •                  *          len - 要写入的字节数。  
  •                  * ②:in.read(buffer))!=-1,是从流buffer中读取一个字节,当流结束的时候read返回-1
  •                  */  
  •   
  •                 while((byteread = in.read(buffer))!=-1){  
  •                     out.write(buffer, 0, byteread);  
  •                 }  
  •                 return true;  
  •             } catch (FileNotFoundException e) {  
  •                   
  •                 return false;  
  •             } catch (IOException e) {  
  •                 return false;  
  •             }finally{  
  •                 try {  
  •                     if(out!=null){  
  •                         out.close();  
  •                     }  
  •                     if(in!=null){  
  •                         in.close();  
  •                     }  
  •                 } catch (IOException e) {  
  •                      
  •                     e.printStackTrace();  
  •                 }  
  •             }  
  •     }</span>  


运行结果:
缓冲输入输出流方式复制文件,用时:499ms





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马