首页 > 解决方案 > 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());
                }
            }
        }
    }

标签: javafilesortingdirectory

解决方案


您遇到的问题是您没有在创建空文件或目录的代码中推进目录。

下面的代码应该解决这个问题

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 ,因为它是起作用的。


推荐阅读