【问题标题】:How to save only zip files and remove other folders using java?如何仅保存 zip 文件并使用 java 删除其他文件夹?
【发布时间】:2014-06-03 11:17:57
【问题描述】:

这里我有文件夹(书籍),我有 3 个子文件夹,名为:sub1、sub2、sub3sub1 有 2 个文件sub2 有 3 个文件sub3有4个文件。还有 sub1.zipsub2.zipsub3.zip。我想只保留 zip 文件删除 Books 的 sub1、sub2、sub3 文件夹。使用我的代码,我可以删除 sub1 文件夹、sub2、sub3 的所有内部文件,最后所有文件夹都变空,然后 如何删除 sub1、sub2 和 sub3 文件夹

public void SaveZipFiles(File destwithouAudio) throws IOException {
    File[] listOfFiles = destwithouAudio.listFiles();
    for (File listOfFile : listOfFiles) {
        if (listOfFile.getName().endsWith(".zip")) {
        } else {
            File FolderInside = new File(listOfFile.getAbsolutePath());
            File[] listOfFilesInside = FolderInside.listFiles();
            for (File listOfFilesInside1 : listOfFilesInside) {
                File deleteFolder = new File(listOfFilesInside1.getAbsolutePath());
                //System.out.println(""+listOfFilesInside[j]);
                RecursiveDelete(deleteFolder);
            }
        }
    }
}

RecursiveDelete 方法代码为:

public static void RecursiveDelete(File file) throws IOException {
    if (file.isDirectory()) {
        if (file.list().length == 0) {
            file.delete();
            System.out.println("Directory is deleted : " + file.getAbsolutePath());
        } else {
            String files[] = file.list();
            for (String temp : files) {
                File fileDelete = new File(file, temp);
                RecursiveDelete(fileDelete);
            }
            if (file.list().length == 0) {
                file.delete();
                System.out.println("Directory is deleted : " + file.getAbsolutePath());
            }
        }
    } else {
        file.delete();
        System.out.println("File is deleted : " + file.getAbsolutePath());
    }
}

sub1,sub2,sub3 文件夹中删除所有文件后,我需要删除所有 sub1,sub2,sub3 文件夹。

在哪里更改代码?

【问题讨论】:

  • 你不使用 Java 7 吗?
  • 您的代码工作正常,它也在删除空目录
  • @Sanjeev,文件正在 sub1,sub2 内删除。成为 sub1,sub2 文件夹后清空剩余的文件夹。不删除 sub1,sub2。
  • 我在我的 Windows 机器上运行了你的代码,它运行良好。您在使用其他操作系统吗?

标签: java file directory delete-file


【解决方案1】:
public void deleteDir(File dir) {
    if (dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }

    return dir.delete(); // The directory is empty now and can be deleted.
}

那么,你可以使用

public void SaveZipFiles(File destwithouAudio) { 
    File[] deletion = destwithouAudio.listFiles(new FilenameFilter() {

        @Override
        public boolean accept(File dir, String name) {
            return !name.endsWith(".zip");
        }

    });
    for (File toDelete : deletion) {
        deleteDir(toDelete);
    }
}

(使用deleting folder from java文件夹删除)

【讨论】:

  • destwithouAudio,这是我的主文件夹,其中有所有 .zip 文件,子文件夹位于 @Zahlii
猜你喜欢
  • 1970-01-01
  • 2014-02-15
  • 2012-02-23
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多