首先,我们需要了解一下JDK1.7引入的Paths和Files类,它们提供了更加方便的文件和路径操作方法。
1. 复制文件夹
示例1
让我们看一下如何使用Paths和Files类来实现复制整个文件夹的功能。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FolderCopyExample {
public static void main(String[] args) throws IOException {
Path source = Paths.get("/path/to/source/folder");
Path target = Paths.get("/path/to/target/folder");
Files.walk(source).forEach(path -> {
try {
Path targetPath = target.resolve(source.relativize(path));
if (Files.isDirectory(path)) {
Files.createDirectories(targetPath);
return;
}
Files.copy(path, targetPath);
} catch (IOException e) {
System.err.println(e);
}
});
}
}
-
首先,我们创建了两个Path对象
source
和target
,分别表示源文件夹路径和目标文件夹路径。 -
然后,我们使用Files.walk方法遍历源文件夹下的所有文件和子文件夹。
-
对于每个文件和文件夹,我们通过target.resolve(source.relativize(path))计算出相应的目标路径。
-
如果当前路径是文件夹,则我们使用Files.createDirectories方法先创建目标文件夹,再将其它子文件夹和文件复制到目标文件夹下。
-
如果当前路径是文件,则我们使用Files.copy方法将该文件复制到目标路径下。
示例2
另一个示例,假设我们想要复制一个文件夹,并且只复制其中的txt文件,可以像下面这样修改代码:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FolderCopyExample {
public static void main(String[] args) throws IOException {
Path source = Paths.get("/path/to/source/folder");
Path target = Paths.get("/path/to/target/folder");
Files.walk(source).forEach(path -> {
try {
Path targetPath = target.resolve(source.relativize(path));
if (Files.isDirectory(path)) {
Files.createDirectories(targetPath);
return;
}
if (!Files.isRegularFile(path) || !path.toString().endsWith(".txt")) {
return;
}
Files.copy(path, targetPath);
} catch (IOException e) {
System.err.println(e);
}
});
}
}
2. 删除文件夹
示例1
现在,让我们看一下如何使用Paths和Files类来实现删除整个文件夹的功能。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FolderDeleteExample {
public static void main(String[] args) throws IOException {
Path folder = Paths.get("/path/to/folder");
Files.walk(folder)
.sorted((path1, path2) -> -path1.compareTo(path2))
.forEach(path -> {
try {
Files.delete(path);
} catch (IOException e) {
System.err.println(e);
}
});
}
}
-
首先,我们创建一个Path对象
folder
,表示要删除的文件夹路径。 -
然后,我们使用Files.walk方法遍历整个文件夹下的所有文件和子文件夹,并按照从大到小的顺序进行遍历。
-
对于每个文件和文件夹,我们使用Files.delete方法删除它们。
示例2
我们也可以通过该方法来删除一个文件夹中的所有txt文件,像下面这样修改代码:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FolderDeleteExample {
public static void main(String[] args) throws IOException {
Path folder = Paths.get("/path/to/folder");
Files.walk(folder)
.sorted((path1, path2) -> -path1.compareTo(path2))
.forEach(path -> {
if (!Files.isRegularFile(path) || !path.toString().endsWith(".txt")) {
return;
}
try {
Files.delete(path);
} catch (IOException e) {
System.err.println(e);
}
});
}
}
这两个示例展示了如何使用JDK1.7中的Paths和Files类来实现文件夹的复制和删除功能。在实际应用中,我们可以根据自己的需求对代码进行相应的修改和扩展。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JDK1.7 Paths,Files类实现文件夹的复制与删除的实例 - Python技术站