我的代码不会编译。我认为它与目录路径有关,因为我不断收到错误消息。我正在尝试打印位于桌面的示例目录(SampleDir)。有人可以帮助我使用目录路径吗?先感谢您!
public class WalkDirectory {
public static void main(String[] args) {
File [] files = new File("C:/SampleDir").listFiles();
showFiles(files);
}
private static void showFiles(File[] files) {
for(File file: files) {
if(file.isDirectory()) {
System.out.println("Directory: " + file.getName());
showFiles(file.listFiles()); // files from the existing directory or current directory
}
else {
System.out.println("File: " + file.getName());
}
}
}
答案 0 :(得分:1)
您的}
字符放错了地方。
编辑过的代码和编辑过的代码中,它最后错过了一个}
字符。
对于信息,在原文中,一个是错位的,另一个是遗漏的(最后一个)我相信。
试试:
import java.io.File;
public class WalkDirectory {
public static void main(String[] args) {
File[] files = new File("C:/SampleDir").listFiles();
showFiles(files);
}
private static void showFiles(File[] files) {
for (File file : files) {
if (file.isDirectory()) {
System.out.println("Directory: " + file.getName());
showFiles(file.listFiles()); // files from the existing directory or current directory
}
else {
System.out.println("File: " + file.getName());
}
}
}
}
修改强>
线程中的异常" main" java.lang.NullPointerException at WalkDirectory.showFiles(WalkDirectory.java:16)at WalkDirectory.main(WalkDirectory.java:11)
我认为NPE是在foreach中触发的
for (File file : files)
因为文件数组是nulL
。
你应该写一下来检查文件夹是否存在:
public static void main(String[] args) {
final File dirWithFiles = new File("C:/SampleDir");
//check folder exist and is a directory
if (!dirWithFiles.exist()) {
System.out.println("dir " + dirWithFiles + " does not exit");
return;
}
if (!dirWithFiles.isDirectory()) {
System.out.println("dir " + dirWithFiles + " is not a directory");
return;
}
// end check
File[] files = dirWithFiles.listFiles();
showFiles(files);
}
如果文件夹控件失败,您应该检查文件系统中应用程序中使用的输入文件夹是否存在。
答案 1 :(得分:0)
如果你在Windows环境中,我认为问题出在你如何声明路径:“C:/ SampleDir”.. 尝试类似的东西:
String path = "C:\\Documents and Settings\\Your User\\Desktop\\SampleDir";
File[] files = new File(path).listFiles();