1

Java(JARとしてコンパイル)のデータベースを使用してアプリケーションを作成しています。データベースに接続するには、ユーザーはデータベースのアドレスを入力する必要があります。プログラムを使用するたびにアドレスを覚えたり入力したりするのは面倒です。

したがって、アドレスをテキストファイルのどこかに保存したいのですが...どこですか?このアプリケーションにどのオペレーティングシステムの誰もがアクセスできるようにしたいのですが、JARをフォルダーに入れたくないのです。

おそらく、JAR自体の中にあるテキストファイルから書き込み/読み取りを行うことは可能ですか?

4

4 に答える 4

1

Sotirios Delimanolisが言ったように、プロパティファイルを作成して保存することができます。

それを行うのは非常に簡単です。以下の例を見てください(の投稿を参照してください)

package test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class WritePropertiesFile {
 public static void main(String[] args) {
  try {
   Properties properties = new Properties();
   properties.setProperty("favoriteAnimal", "marmot");
   properties.setProperty("favoriteContinent", "Antarctica");
   properties.setProperty("favoritePerson", "Nicole");

   File file = new File("test2.properties");
   FileOutputStream fileOut = new FileOutputStream(file);
   properties.store(fileOut, "Favorite Things");
   fileOut.close();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

 }
}

プロパティファイルをjarファイルに保存することはお勧めしませんが、保存することは可能です。

スタックオーバーフローの回答に従ってください:Javaでテキストファイルに書き込む方法

于 2013-03-04T20:59:48.843 に答える
0

Java Preferences APIを試して、このようなユーザーデータを保存してください。

アプリケーションフォルダへのデータの保存には問題があります(たとえば、ユーザーに権限がない、アプリケーションが署名されているなど)。ユーザーのホームディレクトリにファイルを保存できますが、ほとんどのオペレーティングシステムには、ユーザーデータを保存するための指定された場所があります(たとえば、Macの「アプリケーションサポート」、WindowsのAppDataなど)。さらに、ユーザーはおそらくあなたが彼らのホームディレクトリを乱雑にしていることに感謝しないでしょう。プロパティファイルを作成し、それを適切な場所に自分で保存することもできますが、より簡単な解決策は、ファイルの書き込み先を知る必要があるという苦痛を抽象化するPreferencesAPIを使用することです。

次に例を示します。

import java.util.prefs.Preferences;

public class Test {
    public static final String DB_PROP = "user.selected.db.address";

    public static void main(String[] args) {
        Preferences prefs = Preferences.userNodeForPackage(Test.class);
        prefs.put(DB_PROP, "foo");
        String dbAddress = prefs.get(DB_PROP, null);
        System.out.println(dbAddress);
    }
}
于 2013-03-04T21:05:18.733 に答える
0

ClassLoader.getResourceAsStream()などを使用して、jar内の任意の場所でファイルを開くことができます。

于 2013-03-04T20:56:00.587 に答える
0

これが私のために働いたものです。パスSystem.getProperty("user.home")をファイルの場所として使用しただけです。これはオペレーティングシステムに依存しません。

于 2013-03-04T21:27:01.420 に答える