-1

シンプルなサイクルでこの厄介な問題が発生しました。これは私のプログラムのスキーマです

public static void methodA(File a, File b){
      //procedure
}

Public static void readFiles(String a){

   File folder = new File(a);
   File[] listOfFiles = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.lenght-1; i++) 
    {

        if (listOfFiles[i].isDirectory())
        {
            readFile(listOfFiles[i].getPath());
        }
        else
        {
            methodA(listOfFiles[i],listOfFiles[i+1])
        }
    }
}

 public static void main(String[] args) throws InterruptedException {

   String path = new String("Path to global folder");
   readFile(path);

}

問題は、バージョン 2 から 3 の最初のフォルダーに入ったときに、次のエラー メッセージが表示されることです (ファイル数 - ファイルのみ - は 5 です):

スレッド「メイン」での例外 java.lang.NullPointerException

しかし、次のようなことをすると、for (int i = 3; i < listOfFiles.length-1; i++)プログラムは問題なく動作し、他のフォルダー内のいくつかのファイルでも同じことが起こります。

すべてのフォルダーには、少なくとも 3 つのファイル (ファイルのみ) があります。

何が起こっているのでしょうか?問題を理解するためにデバッグを試みましたが、成功しませんでした。

4

1 に答える 1

1

listFiles はフォルダに対してのみ有効です。フォルダーではなくファイルで listFiles を使用すると、 が返されnullます。

次に、listOfFiles.lenghtNPE をスローします。

If ケースを反転します。

于 2013-10-21T12:56:12.953 に答える