• Java将一个目录下的所有数据复制到另一个目录下


     1 /*
     2     将"C:\JavaProducts\Source"下的所有数据复制到"C:\Target"下
     3 */
     4 
     5 import java.io.*;
     6 
     7 public class JavaCopyDemo{
     8     final static String SOURCESTRING = "C:\JavaProducts\Source";
     9     final static String TARGETSTRING = "C:\Target";
    10     
    11     public static void main(String[] args){
    12         if(!(new File(SOURCESTRING)).exists()){
    13             System.out.println("源文件" + SOURCESTRING + "不存在,无法复制!");
    14             return;
    15         }else if((new File(TARGETSTRING)).exists()){
    16             System.out.println("目标文件" + TARGETSTRING + "已经存在,无法复制!");
    17             return;
    18         }else{
    19             if((new File(SOURCESTRING)).isFile()){
    20                 copyFile(new File(SOURCESTRING),new File(TARGETSTRING));
    21             }else if((new File(SOURCESTRING)).isDirectory()){
    22                 copyDirectory(SOURCESTRING,TARGETSTRING);
    23             }
    24         }
    25     }
    26     
    27     private static void copyFile(File sourceFile,File targetFile){
    28         if(!sourceFile.canRead()){
    29             System.out.println("源文件" + sourceFile.getAbsolutePath() + "不可读,无法复制!");
    30             return;
    31         }else{
    32             System.out.println("开始复制文件" + sourceFile.getAbsolutePath() + "到" + targetFile.getAbsolutePath());
    33             FileInputStream fis = null;
    34             BufferedInputStream bis = null;
    35             FileOutputStream fos = null;
    36             BufferedOutputStream bos = null;
    37             
    38             try{
    39                 fis = new FileInputStream(sourceFile);
    40                 bis = new BufferedInputStream(fis);
    41                 fos = new FileOutputStream(targetFile);
    42                 bos = new BufferedOutputStream(fos);
    43                 int len = 0;
    44                 while((len = bis.read()) != -1){
    45                     bos.write(len);    
    46                 }
    47                 bos.flush();
    48                 
    49             }catch(FileNotFoundException e){
    50                 e.printStackTrace();    
    51             }catch(IOException e){
    52                 e.printStackTrace();
    53             }finally{
    54                 try{
    55                     if(fis != null){
    56                         fis.close();    
    57                     }
    58                     if(bis != null){
    59                         bis.close();    
    60                     }
    61                     if(fos != null){
    62                         fos.close();    
    63                     }
    64                     if(bos != null){
    65                         bos.close();    
    66                     }
    67                     System.out.println("文件" + sourceFile.getAbsolutePath() + "复制到" + targetFile.getAbsolutePath() + "完成");
    68                 }catch(IOException e){
    69                     e.printStackTrace();
    70                 }
    71             }
    72         }
    73     }
    74     
    75     private static void copyDirectory(String sourcePathString,String targetPathString){
    76         if(!new File(sourcePathString).canRead()){
    77             System.out.println("源文件夹" + sourcePathString + "不可读,无法复制!");
    78             return;
    79         }else{
    80             (new File(targetPathString)).mkdirs();
    81             System.out.println("开始复制文件夹" + sourcePathString + "到" + targetPathString);
    82             File[] files = new File(sourcePathString).listFiles();
    83             for(int i = 0; i < files.length; i++){
    84                 if(files[i].isFile()){
    85                     copyFile(new File(sourcePathString + File.separator + files[i].getName()),new File(targetPathString + File.separator + files[i].getName()));    
    86                 }else if(files[i].isDirectory()){
    87                     copyDirectory(sourcePathString + File.separator + files[i].getName(),targetPathString + File.separator + files[i].getName());
    88                 }    
    89             }
    90             System.out.println("复制文件夹" + sourcePathString + "到" + targetPathString + "结束");
    91         }
    92     }
    93 }
  • 相关阅读:
    在线编辑Office文件
    将自然数分解为若干连续的自然数
    C#远程连接Oracle数据库(不安装客户端)
    大数阶乘
    小写金额转换为大写金额
    SQL优化
    C#枚举器:foreach语句、IEnumerable、IEnumerator以及yield return (二)
    C#枚举器:foreach语句、IEnumerable、IEnumerator以及yield return (一)
    PPT播完最后一个动画后自动进入下一页
    C#中的abstract、virtual、override和new
  • 原文地址:https://www.cnblogs.com/wangtianze/p/6690652.html
Copyright © 2020-2023  润新知