软件编程
位置:首页>> 软件编程>> java编程>> java将一个目录下的所有数据复制到另一个目录下

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

作者:wangtianze  发布时间:2023-01-08 15:11:44 

标签:java,数据复制

本文实例为大家分享了java将一个目录下的所有数据复制到另一个目录下的具体代码,供大家参考,具体内容如下


/*
将"C:\\JavaProducts\\Source"下的所有数据复制到"C:\\Target"下
*/

import java.io.*;

public class JavaCopyDemo{
final static String SOURCESTRING = "C:\\JavaProducts\\Source";
final static String TARGETSTRING = "C:\\Target";

public static void main(String[] args){
 if(!(new File(SOURCESTRING)).exists()){
  System.out.println("源文件" + SOURCESTRING + "不存在,无法复制!");
  return;
 }else if((new File(TARGETSTRING)).exists()){
  System.out.println("目标文件" + TARGETSTRING + "已经存在,无法复制!");
  return;
 }else{
  if((new File(SOURCESTRING)).isFile()){
   copyFile(new File(SOURCESTRING),new File(TARGETSTRING));
  }else if((new File(SOURCESTRING)).isDirectory()){
   copyDirectory(SOURCESTRING,TARGETSTRING);
  }
 }
}

private static void copyFile(File sourceFile,File targetFile){
 if(!sourceFile.canRead()){
  System.out.println("源文件" + sourceFile.getAbsolutePath() + "不可读,无法复制!");
  return;
 }else{
  System.out.println("开始复制文件" + sourceFile.getAbsolutePath() + "到" + targetFile.getAbsolutePath());
  FileInputStream fis = null;
  BufferedInputStream bis = null;
  FileOutputStream fos = null;
  BufferedOutputStream bos = null;

try{
   fis = new FileInputStream(sourceFile);
   bis = new BufferedInputStream(fis);
   fos = new FileOutputStream(targetFile);
   bos = new BufferedOutputStream(fos);
   int len = 0;
   while((len = bis.read()) != -1){
    bos.write(len);
   }
   bos.flush();

}catch(FileNotFoundException e){
   e.printStackTrace();
  }catch(IOException e){
   e.printStackTrace();
  }finally{
   try{
    if(fis != null){
     fis.close();
    }
    if(bis != null){
     bis.close();
    }
    if(fos != null){
     fos.close();
    }
    if(bos != null){
     bos.close();
    }
    System.out.println("文件" + sourceFile.getAbsolutePath() + "复制到" + targetFile.getAbsolutePath() + "完成");
   }catch(IOException e){
    e.printStackTrace();
   }
  }
 }
}

private static void copyDirectory(String sourcePathString,String targetPathString){
 if(!new File(sourcePathString).canRead()){
  System.out.println("源文件夹" + sourcePathString + "不可读,无法复制!");
  return;
 }else{
  (new File(targetPathString)).mkdirs();
  System.out.println("开始复制文件夹" + sourcePathString + "到" + targetPathString);
  File[] files = new File(sourcePathString).listFiles();
  for(int i = 0; i < files.length; i++){
   if(files[i].isFile()){
    copyFile(new File(sourcePathString + File.separator + files[i].getName()),new File(targetPathString + File.separator + files[i].getName()));
   }else if(files[i].isDirectory()){
    copyDirectory(sourcePathString + File.separator + files[i].getName(),targetPathString + File.separator + files[i].getName());
   }
  }
  System.out.println("复制文件夹" + sourcePathString + "到" + targetPathString + "结束");
 }
}
}

来源:https://www.cnblogs.com/wangtianze/p/6690652.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com