ここでは、起動時にファイルを作成し、同じディレクトリに置くことができる方法です.jar:
private void createFile() throws Exception {
File currentDir = new File(Preferences.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
prefs = new File(currentDir.getParentFile().getAbsoluteFile() + "/hackemos-prefs.txt");
if(!prefs.exists()) {
prefs.createNewFile();
String[] defaults = {
"9", // number of items
"100", // correct limit
"0", // amount to get wrong
"75", // delay, in ms
"456,278", // default mouse position for start button
"653,476", // default mouse position for copying text
"686,615", // default mouse position for the text box
"150,100", // Copy drag range
"0" // mac mode, 1 = enabled
};
write(defaults);
}
}
は、ここでは、起動時にファイルを作成し、Windows APPDATAフォルダ(物事を維持するための良い場所)、またはLinux/Macのと同等に置くことができる方法です。
public static void initDirs() {
String osName = Hardware.osName.toLowerCase();
if(osName.contains("win")) {
gameDir = new File((System.getenv("APPDATA") + File.separator + "Hidden" + File.separator));
} else if(osName.contains("mac")) {
gameDir = new File(System.getProperty("user.home") + "/Library/Application Support/Hidden"+File.separator);
} else if(osName.contains("nux")) {
gameDir = new File(System.getProperty("user.home"));
}
if(!gameDir.exists()) gameDir.mkdir();
try {
FileOutputStream fos = new FileOutputStream(gameDir + File.separator + fileName);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(object);
out.close();
fos.close();
return true;
} catch(Exception e) {
e.printStackTrace();
System.err.println("Couldn't save game.");
return false;
}
}
これは私の古いプログラムの一部のコードです。
通常、Windowsではアプリケーションのディレクトリに書き込むことはできません( 'Users'のような書き込み可能なディレクトリにないと仮定します)。 jarファイルをProgram Filesに入れると、そこに書き込むには管理者権限が必要です。現在のユーザーのディレクトリにファイルを書き込むことをお勧めします。すべては言った、何が間違っている[この答えですか?](http://stackoverflow.com/questions/4032957/how-to-get-the-real-path-of-java-application-at-runtime) –
もしそうなら私はすべてのものが正しく動作するはずですユーザーフォルダから私のjarファイルを置く?また、stackoverflowの私の最初の質問に答えてくれてありがとう:P – Peyman
いいえ、あなたの瓶の場所は問題ではありません。それは移植可能でなければなりません。 Windowsのユーザディレクトリ( 'C:\ users \ someAccount'のような)は、常に書き込み可能でなければなりません。答えはそれを言いますが、それは 'System.getProperty(" user.home ");'です。 Windows 10とJava 8では、これは私に 'C:\ Users \ Chris'を与えます –