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.