0

コードでさまざまな例外の問題が発生しています。このクラスは、コンピューター上のすべてのフォルダー/サブフォルダーを検索し、それらを ArrayList として一覧表示するように設計されています。その中のファイルは気にしません。これがコードです。助けてください、私はこれに1週間イライラしています。

import java.io.File;
import java.util.ArrayList;


public class Detector
{
   private ArrayList<String> paths;

   public Detector()
   {
      File[] roots = File.listRoots();
      for(File drive : roots)
      {
         getPaths(drive.listFiles());
      }
   }
   public Detector(String str)
   {

      File[] bob = new File(str).listFiles();
      getPaths(bob);
   }

   public void getPaths(File[] files)
   {
      for (File file : files)
      {
          if(file.isDirectory())
          {
             paths.add(file.getName());
             getPaths(file.listFiles());
          }
      }
   }

   public ArrayList<String> getPathList()
   {
      return paths;
   }

   public void printPaths()
   {
      for(String str: this.getPathList())
      {
         System.out.println(str);
      }
   }
   public static void main(String[] args)
   {
         Detector tom = new Detector("/F:");
         tom.printPaths();
   }
}
4

3 に答える 3

1

この行の構文が正しくありません

private ArrayList<String> paths;

arraylist を適切に初期化していません。それを正しく初期化するには、あなたがしなければならないでしょう

private ArrayList<String> paths = new ArrayList<>();

注: Java 1.7 では冗長であるため、String内部には入れませんでした。<>

于 2013-09-16T15:30:32.607 に答える
0

追記:

File.listFiles()nullあなたの NullPointerException である可能性があります。そうする:

public void getPaths(File[] files)
{
    if (files == null) {
        return;
    }

Java 7 には、いくつかの新しいクラスが付属するFiles.walkFileTreeがありますが、慣れる価値があります。

于 2013-09-16T16:21:32.497 に答える