1. 复制只有一个目录下的文件夹
主要是需要用到File类和文件流的操作。复制文件实际上就是字节流的input和output
/**8
* 复制单级目录下的文件
* 1. 新建file对象
* 指向源文件source_file
* 指向目标文件target_file
* 如果目标文件不存在则新建
* 2. 获取文件列表
* 3. 循坏遍历文件srcFile完成读写操作
* 新建文件夹下的文件destFile
* (1)读字符流:先读
* (2)写字符流:再写
*/
private static void copyContent() throws IOException {
File source_file=new File("D:\\study\\java");
File target_file=new File("D:\\study\\java1");
if(!target_file.exists()){
target_file.mkdir();
}
File[] files=source_file.listFiles();
System.out.println(files.length);
for (File srcFile : files) {
String srcFileName=srcFile.getName();
File destFile=new File(target_file,srcFileName);
copy(srcFile,destFile);
}
}
/***
* 文件复制工作
* 主要是流的输入输出
* @param srcFile
* @param destFile
* @throws IOException
*/
private static void copy(File srcFile, File destFile) throws IOException {
BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(destFile));
byte[] bys=new byte[1024];
int len;
while((len=bufferedInputStream.read(bys))!=-1){
bufferedOutputStream.write(bys,0,len);
}
bufferedInputStream.close();
bufferedOutputStream.close();
}
2. 复制多级目录文件夹
相对于复制单级目录文件夹而言,多级目录下还有文件夹,故需要一个判断是否问文件的活成,如果是文件是进行复制,如果不是文件即为文件夹就递归遍历直至没有文件夹为止:
public static void main(String[] args) throws IOException {
// copyContent();
File source_file=new File("D:\\study\\java");
String target_FilePath="D:\\study\\java1";
copyMulContent(source_file,target_FilePath);
}
/***
* 复制多级目录下的文件
* 1. 新建file对象
* * 指向源文件source_file
* * 指向目标文件target_file
* * 如果目标文件不存在则新建
* 2. 判断文件是否为目录:
* 是: 获取文件列表并递归获取
* 否: 复制文件
* @param source_file
* @param target_FilePath
*/
private static void copyMulContent(File source_file, String target_FilePath) throws IOException {
File target_file=new File(target_FilePath);
if(!target_file.exists()){
target_file.mkdir();
}
File[] files=source_file.listFiles();
System.out.println(files.length);
for (File file : files) {
if(file.isDirectory()){
target_FilePath+="//"+file.getName();
copyMulContent(file, target_FilePath);
}else{
String srcFileName=file.getName();
File destFile=new File(target_file,srcFileName);
copy(file,destFile);
}
}
}