-4
File f = new File(System.getProperty("user.home/Downloads"));

このコードで NPE エラーが発生するのはなぜですか?

nullが返されることはわかっていますが、ディレクトリはそこにあります...

4

2 に答える 2

6

なぜなら

System.getProperty("user.home/Downloads")

nullキーで設定されたそのようなプロパティがないため、 を返しますuser.home/Downloads

あなたが探しているかもしれません

final String fileName = System.getProperty("user.home") + File.saperator + "Downloads";
File f = new File(fileName);
于 2012-11-17T02:55:19.653 に答える
0

<key,value>プロパティは、定義済みのシステム属性に関する情報を提供できるペア (両方とも文字列)のコレクションです。定義済みのものは、関数のドキュメントにリストされていますSystem.getProperties。次のキーが定義されています。

java.version
java.vendor 
java.vendor.url 
java.home 
java.vm.specification.version 
java.vm.specification.vendor 
java.vm.specification.name 
java.vm.version 
java.vm.vendor 
java.vm.name 
java.specification.version 
java.specification.vendor 
java.specification.name 
java.class.version 
java.class.path 
java.library.path 
java.io.tmpdir 
java.compiler 
java.ext.dirs 
os.name 
os.arch 
os.version 
file.separator 
path.separator 
line.separator 
user.name 
user.home 
user.dir

ご覧user.homeのとおり、そのリストにあるため、 を呼び出しても問題なく動作しますSystem.getProperty("user.home");

getPropertyただし、引数を指定してメソッドを呼び出していuser.home/Downloadsます。これは、上記のリストにないため、未定義のキーです。

"/Downloads"ユーザーのホーム ディレクトリに追加する場合は、呼び出しの外でgetProperty行う必要があります。

System.getProperty("user.home") + "/Downloads";

このように、定義済みのキーを使用しているため、NullPointerException.

于 2012-11-17T04:05:58.957 に答える