无法打印目录

时间:2016-10-18 19:43:27

标签: java directory

我的代码不会编译。我认为它与目录路径有关,因为我不断收到错误消息。我正在尝试打印位于桌面的示例目录(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());

            }
        }

    }

2 个答案:

答案 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();