package com.example.cisum.utils;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class FileUtilsDemo {
public static void main(String[] args) throws IOException {
//1.JDK自带的文件复制、移动、删除
//最后参数CopyOption REPLACE_EXISTING 替换原有文件 COPY_ATTRIBUTES 复制文件属性 ATOMIC_MOVE 保证原子性移动(如中间报错,回滚)
// Files.copy(Paths.get("doc/alarm.log"), Paths.get("doc/alarm1.log"), StandardCopyOption.REPLACE_EXISTING);
//Files.copy(Paths.get("doc/alarm.log"),Paths.get("doc/alarm1.log"));//源文件和目标文件都是file
//Files.copy(Files.newInputStream(Paths.get("doc/alarm1.log")),Paths.get("doc/alarm2.log"));//源文件是流,目标文件file
//java9以上版本。。
// Files.copy(Paths.get("doc/alarm2.log"),Files.newInputStream(Paths.get("doc/alarm3.log")));//源文件file,目标文件是流
// Files.copy(Files.newInputStream(Paths.get("doc/alarm3.log")), Files.newInputStream(Paths.get("doc/alarm4.log")))//但没有源文件和目标都是流的,正确写法如下
// //正确写法 java9以上版本。。
// try(InputStream inputStream = Files.newInputStream(Paths.get("doc/alarm4.log"));
// OutputStream out = Files.newOutputStream(Paths.get("/doc/5.log"))) {
// inputStream.transferTo(Files.newInputStream(out));
// }
// Files.move(Paths.get("doc/alarm2.log"),Paths.get("doc/alarm3.log"));//先复制,再删除
// Files.delete(Paths.get("doc/alarm3.log"));
//2.commons-io的相关工具方法
//FileUtils.copyDirectory(new File("doc"),new File("doc2"));//复制文件夹(包含内部文件)
// FileUtils.copyDirectoryToDirectory(new File("doc"),new File("doc3"));//把doc复制到doc3下
// FileUtils.copyFileToDirectory(new File("doc/nginx.conf"),new File("doc3"));//把指定文件复制到指定文件夹下
FileUtils.moveToDirectory(new File("doc/alarm.log"),new File("doc4"),true);//文件移动到文件夹,是否新建目录
FileUtils.deleteQuietly(new File("doc/alarm.log"));//静默删除,及时中间发生异常,不会报错
FileUtils.cleanDirectory(new File("doc4"));//清理文件夹里的所有文件
}
}