簡體   English   中英

使用Java遍歷文件和目錄

[英]Traversing files and directories using Java

我有一個小代碼,可以返回任何目錄下的文件列表。

我需要做的是將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才能正常工作。

救命。

謝謝

是的,正斜杠很好。 它們被標准化為依賴於OS的分隔符。

該錯誤告訴您\\m是無效的轉義序列。 每個反斜杠嘗試轉義以下字符。 因此,如果需要在字符串中使用反斜杠,請使用雙斜杠: "c:\\\\myDocuments\\\\myFolder"

為了獲取目錄和文件,可以使用.listFiles()然后使用file.isDirectory()來檢查它是否是目錄。

我使用類似的方法來清除給定的文件夾。

    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);
      }
   }

您可以將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;
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM