使用java删除目录中除隐藏文件以外的所有文件和文件夹

时间:2014-02-26 11:08:35

标签: java swing svn

我需要删除目录中的所有文件和文件夹,但我需要.svn文件夹,以便我可以每次提交和删除文件夹。我的下面的代码工作,但它只保留.svn父文件夹,但其子.svn文件夹的其余部分被删除

我的代码:

      if (pFile.exists() ) {
        System.out.println(pFile.getName());
        if (pFile.isDirectory()) {
            if (pFile.list().length == 0) {
                 System.out.println("0>"+pFile.getName());
                pFile.delete();
            } else {
                System.out.println("1>"+pFile.getName());
                String[] strFiles = pFile.list();

                for (String strFilename : strFiles) {
                    File fileToDelete = new File(pFile, strFilename);
                    System.out.println("2>"+fileToDelete.getName());
                    if(fileToDelete.getName()==".svn")
                    {
                        // Do Nothing
                        break;
                    }
                    else
                    {
                    delete(fileToDelete);
                    }
                }
            }
        } else {
             System.out.println("3>"+pFile.getName());
           pFile.delete();
        }
    }

3 个答案:

答案 0 :(得分:0)

需要修改条件如下。这里break将停止循环,因为continue将仅跳过当前删除(即文件夹为.svn)

 if(fileToDelete.getName()!=null && fileToDelete.getName().equals(".svn")){
     // Do Nothing
     continue;
}

答案 1 :(得分:0)

您可以使用pFile.isHidden()来检查它是否是隐藏文件。 此外,您可以使用File.listFiles()而不是File.list()列出文件夹中的所有文件,因此您无需创建新文件。

答案 2 :(得分:0)

其他建议应解决您的问题,否则您需要删除目录中的所有文件和文件夹。因此,您可能正在删除其中包含.svn的所有子文件夹,因此您不会看到它们保留。