[英]Traversing files and directories using Java
我有一個小代碼,可以返回任何目錄下的文件列表。
我需要做的是將Directories
和Files
放在第一個給定目錄下。
這是我正在使用的代碼。
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.