package org.example.test;
import cn.hutool.core.io.FileUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.nio.file.*;
@Slf4j
public class CopyFileTest {
//hutool:把文件复制到某个目录, 一般用于不同名文件
@Test
public void testCopyFileToDirFile() {
Path p1 = Paths.get("/Users/mashanshan/test/styles.css");
Path p2 = Paths.get("/Users/mashanshan/test/a/a.css");
FileUtil.copy(p1, p2);
}
//hutool:把文件复制到某个目录, 一般用于同名文件
@Test
public void testCopyFileToDir() {
Path p1 = Paths.get("/Users/mashanshan/test/styles.css");
//如果b目录存在, 则直接复制到此目录
//如果b目录不存在, 则以b为文件名
Path p2 = Paths.get("/Users/mashanshan/test/b");
FileUtil.copyFile(p1,p2, StandardCopyOption.REPLACE_EXISTING);
}
//hutool: 把a文件夹复制到b文件夹中
//注意: 是复制a文件夹
@Test
public void copyDirSelfToDir() {
Path p1 = Paths.get("/Users/mashanshan/test/a");
Path p2 = Paths.get("/Users/mashanshan/test/b");
FileUtil.copy(p1, p2);
}
/**
* 把一个文件复制到另一个文件
* B目录必须存在, 不存在则报错
*/
@Test
public void copyFileToFile() {
Path p1 = Paths.get("/Users/mashanshan/test/a/test.css");
Path p2 = Paths.get("/Users/mashanshan/test/b/test11.css");
try {
Files.copy(p1, p2, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* 文件夹下的文件 -> 文件夹
* 把A目录下的所文件和文件夹复制到B目录
* 如果b目录不存在, 则会自动创建
* 如果b目录中有文件, 会增量添加
* 注意: 是A目录下的文件和文件夹
*/
@Test
public void testCopyDirAllFileToDir() throws IOException {
Path p1 = Paths.get("/Users/mashanshan/test/a/");
Path p2 = Paths.get("/Users/mashanshan/test/b/");
FileUtils.copyDirectory(p1.toFile(), p2.toFile());
}
/**
* 文件夹|文件 -> 文件夹
* 复制某个文件或文件夹到另一个目录中
*/
@DisplayName("复制某个文件或文件夹到另一个目录中")
@Test
public void testCopyToDirectory() throws IOException {
//复制styles.css到b目录中
//Path p1 = Paths.get("/Users/mashanshan/test/a/styles.css");
//复制a目录 到 b目录中, 注意是a目录
Path p1 = Paths.get("/Users/mashanshan/test/a");
Path p2 = Paths.get("/Users/mashanshan/test/b");
FileUtils.copyToDirectory(p1.toFile(), p2.toFile());
}
/**
* 文件夹 -> 文件夹
* 把A文件夹复制到B文件夹中, 如果B目录不存在, 会自动创建
*/
@Test
public void testCopyDirectoryToDirectory() throws IOException {
//把文件styles.css复制到b目录中styles1.css中
Path p1 = Paths.get("/Users/mashanshan/test/a");
Path p2 = Paths.get("/Users/mashanshan/test/c");
FileUtils.copyDirectoryToDirectory(p1.toFile(),p2.toFile());
}
/**
* 文件->目录
* 把文件复制到b目录中, 如果目录不存在,则会自动创建, 如果文件存在, 则覆盖
*/
@DisplayName("文件复制到目录")
@Test
public void testCopyFileToDirectory() throws IOException {
Path p1 = Paths.get("/Users/mashanshan/test/a/styles.css");
Path p2 = Paths.get("/Users/mashanshan/test/b");
FileUtils.copyFileToDirectory(p1.toFile(),p2.toFile());
}
/**
*
* 文件->文件
* 把A文件复制到B文件中
* 1. A,B两个必须是一个文件, 不能是目录
* 2. B文件不存在, 则创建, 目录不存在,则创建
*/
@Test
public void testCopyFile(){
//把文件styles.css复制到b目录中styles1.css中
Path p1 = Paths.get("/Users/mashanshan/test/a/styles.css");
Path p2 = Paths.get("/Users/mashanshan/test/b/styles1.css");
try {
FileUtils.copyFile(p1.toFile(),p2.toFile());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* 清空某个目录
*/
@DisplayName("清空目录")
@Test
public void testCleanDir(){
Path p2 = Paths.get("/Users/mashanshan/test/b");
try {
FileUtils.cleanDirectory(p2.toFile());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@DisplayName("强制删除文件或文件夹")
@Test
public void testForceDelete(){
Path p2 = Paths.get("/Users/mashanshan/test/b");
try {
FileUtils.forceDelete(p2.toFile());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@DisplayName("创建目录")
@Test
public void mkdir(){
Path p2 = Paths.get("/Users/mashanshan/test/b/styles.css");
try {
//创建全路径
//FileUtils.forceMkdirParent( p2.toFile());
//创建路径中的上一级目录
//FileUtils.forceMkdirParent( p2.toFile());
//删除目录
FileUtils.deleteDirectory(p2.toFile());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Test
public void testMoveFile() throws IOException {
Path p1 = Paths.get("/Users/mashanshan/test/a/test.css");
System.out.println(p1.getParent());
System.out.println(p1.getParent().getParent());
Path p2 = Paths.get("/Users/mashanshan/test/c");
//FileUtils.moveFile(p1.toFile(), p1.getParent().toFile());
//FileUtils.moveFileToDirectory(p1.toFile(),p1.getParent().getParent().toFile(),true);
FileUtil.move(p1.toFile(), p2.getParent().toFile(), true);
}
}
Java复制文件或目录方法
于 2023-09-06 18:30:07 首次发布