我有一个小代码可以返回任何目录下的文件列表。
我需要做的是在第一个给定目录下获取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
才能使其正常工作。
帮助。
由于
答案 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;
}
});