1

実行可能なjarファイルがあり、.jarファイルと同じディレクトリにあるtxtファイルに情報を読み書きできるようにしたい. どうやってやるの?実行可能なjarファイルのディレクトリパスを取得するにはどうすればよいですか. Windows プラットフォームでのみ動作する必要があり、デスクトップ アプリケーションです。

4

4 に答える 4

1

Class.getProtectionDomain()。getCodeSource()。getLocation()は、JAR内にある場合、呼び出したクラスを含むJARの場所を返します。

ただし、AndrewThompsonの回答も参照してください。

于 2012-06-17T00:58:49.877 に答える
1

実行可能なjarファイルがあり、.jarファイルと同じディレクトリにあるtxtファイルに情報を読み書きできるようにしたい.

そうしないでください!ほとんどの OS メーカーは、アプリケーションとアプリケーション データを同じ場所に置くべきではないと長い間言い続けてきました。アプリケーション データの最適な場所は、 のサブディレクトリですuser.home

例えば

import java.io.File;

public class QuickTest {

    public static void main(String[] args) {
        String[] pkgPath = { "com", "our", "app" };
        File f = new File(System.getProperty("user.home"));
        File subDir = f;
        for (String pkg : pkgPath) {
            subDir = new File(subDir,pkg);
        }
        System.out.println(f.getAbsoluteFile());
        System.out.println(subDir.getAbsoluteFile());
    }
}
于 2012-06-16T18:22:34.227 に答える
1

次のコード スニペットがこれを行います。

final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());

MyClassあなたのmainクラスに置き換えます

結果のFileオブジェクトは、実行されたファイルをf表します。.jarこのオブジェクトを使用して、ファイルがあるディレクトリを取得し、それを使用してディレクトリ パスを作成できます。

于 2012-07-31T19:52:22.943 に答える
1

新しいファイルを作成するためにフル パスを指定する必要はありません。Java はデフォルトで現在の作業ディレクトリに新しいファイルを作成します。

于 2012-06-16T17:45:07.540 に答える