java - java 无需任何存储即可进行备份
问题描述
我想为我的文件创建备份,如下所示:
代码将获取路径,然后
将创建与新路径同名的文件夹,
文件将重命名为新路径中的新空文件
我的程序的问题将在同一路径中创建所有内容,我不知道如何对其进行排序。
我希望你能帮帮我
这是代码:-
public static void main(String[] args) {
new File("C:\\Users\\Kurenai\\Desktop\\Downloads").mkdir();
Loop(new File("C:\\Users\\Kurenai\\Downloads"));
}
public static void Loop(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null) {
for (int i=0; i<listFile.length; i++) {
if (listFile[i].isDirectory()) {
new File("C:\\Users\\Kurenai\\Desktop\\Downloads\\"+listFile[i].getName().toString()).mkdir();
Loop(listFile[i]);
} else {
pw = new PrintWriter("C:\\Users\\Kurenai\\Desktop\\Downloads\\"+listFile[i].getName().toString());
}
}
}
}
解决方案
您遇到的问题是您没有在创建空文件或目录的代码中推进目录。
下面的代码应该解决这个问题
public class Main {
public static void main(String[] args) throws FileNotFoundException {
new File("C:\\Users\\Kurenai\\Desktop\\Downloads\\").mkdir();
Loop(new File("C:\\Users\\Kurenai\\Downloads\\"));
}
public static void Loop(File dir) throws FileNotFoundException {
File listFile[] = dir.listFiles();
if (listFile != null) {
for (int i=0; i<listFile.length; i++) {
String pathName = listFile[i].getAbsolutePath();
if (!pathName.equals("C:\\Users\\Kurenai\\Desktop\\Downloads")) {
pathName = pathName.replace("C:\\Users\\Kurenai\\Downloads\\", "C:\\Users\\Kurenai\\Desktop\\Downloads\\");
}
if (listFile[i].isDirectory()) {
new File(pathName + "\\" + listFile[i].getName()).mkdir();
Loop(listFile[i]);
} else {
new PrintWriter(pathName + "\\" + listFile[i].getName());
}
}
}
}
}
这通过获取完整路径并将备份目录替换为文件目录并确保这是用于创建目录/文件的路径名来工作。请参阅变量 String pathName ,因为它是起作用的。
推荐阅读
- python - 移动对数图
- rdfs - rdfs:subPropertyOf 的 Shacl 处理
- c# - Rosyln/NetAnayzers/Stylecop Analyzers:生成检查报告
- oracle - Oracle 调试选项 DBMS_DEBUG_JDWP 与 DBMS_DEBUG
- json - 如何在 TypeScript 中创建具有动态键和类型的动态对象?
- python - 如何在python中从外到内在盒子上打勾
- angular - 使用复选框检查垫表中的最大项目
- reactjs - 反应表单控制问题,但在本地显示正常
- flutter - 提供者不重建 UI
- r - 为什么不能得到 R 中的总数?