File f = new File(System.getProperty("user.home/Downloads"));
このコードで NPE エラーが発生するのはなぜですか?
nullが返されることはわかっていますが、ディレクトリはそこにあります...
File f = new File(System.getProperty("user.home/Downloads"));
このコードで NPE エラーが発生するのはなぜですか?
nullが返されることはわかっていますが、ディレクトリはそこにあります...
なぜなら
System.getProperty("user.home/Downloads")
null
キーで設定されたそのようなプロパティがないため、 を返しますuser.home/Downloads
あなたが探しているかもしれません
final String fileName = System.getProperty("user.home") + File.saperator + "Downloads";
File f = new File(fileName);
<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
.