1

Ubuntu 12.04 で Netbeans IDE を使用して Java コードを実行しています。

ファイル ディレクトリへのパス名を持つファイル オブジェクトを作成しようとしており、メソッド listFiles() を使用して、このファイル ディレクトリの下のパス名の配列を返します。

コード:

File allFile=new File("~/Desktop/matlab/CAT_00");
File[] fileList = allFile.listFiles();

ただし、コードを実行すると、宣言する例外が発生します

Exception in thread "main" java.lang.NullPointerException
    at CatTest.main(CatTest.java:29)
Java Result: 1

私のallFileオブジェクトにnullオブジェクトが含まれているように見えますか?私自身よくわかりません。「~/Desktop/matlab/CAT_00」である必要なディレクトリパスを確認してみましたが、正しいものでした。デバッグ モードを使用してこれらの 2 行のコードを確認しようとしたところ、listFiles() がこの例外エラーを返すことがわかりました。ただし、最初に File オブジェクトを作成した CAT_00 メイン ディレクトリの下にファイルとディレクトリがあったため、null 例外エラーが発生する理由がわかりません。したがって、代わりにこれらのファイルとディレクトリのパス名の配列を返す必要がありました。

助けていただければ幸いです!!

4

1 に答える 1

5

NullPointerException が発生する理由は、 listFiles() を実行したときに指定されたパスが実際には存在しないためです。

Java では ~/ からファイルを直接参照することはできません。これは、Java がファイル パスを、ファイルが実行されている場所に関連する URL であるかのように見なすためです。あなたの場合、Eclipse内で実行しているため、Eclipseワークスペースに相対的です。代わりに使用する必要があるのは

String homeDir = System.getProperty("user.home");
File allFile = new File(homeDir + "/Desktop/matlab/CAT_00");
File[] fileList = allFile.listFiles()

ユーザーが実行してSystem.getProperty("user.home")いる OS に関係なく、ユーザーの絶対ホーム ディレクトリ パスを取得します。

于 2013-01-11T04:23:50.953 に答える