使用Java遍历文件和目录

时间:2011-08-01 12:06:40

标签: java file directory traversal

我有一个小代码可以返回任何目录下的文件列表。

我需要做的是在第一个给定目录下获取DirectoriesFiles

这是我正在使用的代码。

    File dir = new File("C:/myDocument/myFolder");

    String[] children = dir.list();
    if (children == null) {

    } else {
        for (int i=0; i<children.length; i++) {

            String filename = children[i];
            System.out.println(filename);
        }
    }

另一件事是当我从Windows 7中选择路径时,我得到了这个C:\myFolder\myFolder。 如果我在Java中使用此路径,则会收到此错误Invalide Escape sequence 我是否必须将其更改为C:/myDocument/myFolder才能使其正常工作。

帮助。

由于

3 个答案:

答案 0 :(得分:5)

是的,正斜杠很好。它们被规范化为依赖于OS的分隔符。

错误告诉您的是\m是无效的转义序列。每个反斜杠都试图转义以下字符。因此,如果您需要字符串中的反斜杠,请使用双斜杠:"c:\\myDocuments\\myFolder"

为了获取目录和文件,您可以使用.listFiles()然后使用file.isDirectory()来检查它是否是目录。

答案 1 :(得分:1)

我使用类似的方法来清除给定的文件夹。

    private static void deleteTree(File file)
    {
      if(file.isDirectory())
      {
        File afile[] = file.listFiles();
         System.out.println("Directory: " + file.getFilename);
         if(afile.length > 0)
         {
            for(int i = 0; i < afile.length; i++)
            {
               if(afile[i].isDirectory())
                  System.out.println("Directory: " + afile[i].getFilename);
                  deleteTree(afile[i]);
               else
                  System.out.println("File: " + afile[i].getFilename);
            }
         }
      } else {
       System.out.println("File: " + file.getFilename);
      }
   }

答案 2 :(得分:0)

您可以误用File.list(FilenameFilter)进行文件遍历,例如:

// list files in dir
new File(dir).list(new FilenameFilter() {
    public boolean accept(File dir, String name) {
        String file = dir.getAbsolutePath() + File.separator + name;
        System.out.println(file);
        return false;
    }
});