23

メインクラスへのパス構造は次のとおりです。

D:/java/myapp/src/manClass.java

プロパティファイルを入れたい

D:/java/myapp/config.properties

ファイル名とその他の構成が含まれます。次のようにプロパティファイルにファイル名を設定します。file=file_to_read.txt

これfile_to_read.txtは次の場所にありますD:/java/myapp/folder_of_file/

メイン クラスは、最初にプロパティ ファイルからファイル名を読み取り、次にファイルからコンテンツを取得します。

config.propertiesとの両方file_to_read.txtが. しかし、私がやりたい方法では成功できませんでした。src/mainClass.java

誰でもこれで私を助けることができますか? 上記で説明したのと同じ内部構造を持つフォルダーをドライブ内の任意の場所に配置したい場合myapp、プログラムが正しく機能するかどうかについて、あなたの提案が必要です。

また、プロジェクトのビルド後に作成された jar からジョブを実行したい場合、問題なく実行できるという提案も必要です。

プロパティファイルを読み取るためだけに、次のように試しました。

        URL location = myClass.class.getProtectionDomain().getCodeSource().getLocation();

        String filePath = location.getPath().substring(1,location.getPath().length());

        InputStream in = myClass.class.getResourceAsStream(filePath + "config.properties");
        prop.load(in);

        in.close();

        System.out.println(prop.getProperty("file"));

しかし、プロパティ ファイルからプロパティを取得しようとすると、エラーが発生します。ありがとう!

4

4 に答える 4

39

クラスフォルダの外からJavaのプロパティファイルを読み取る方法は?

FileInputStream固定ディスク ファイル システム パスで使用します。

InputStream input = new FileInputStream("D:/java/myapp/config.properties");

代わりに、クラスパスでカバーされている既存のパスの1つに移動するか、元D:/java/myapp/のパスをクラスパスに追加することをお勧めします。次に、次のように取得できます。

InputStream input = getClass().getResourceAsStream("/config.properties");

また

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
于 2012-06-28T19:12:50.037 に答える
10

皆さんの提案に感謝します。私はこの方法で仕事をしました:

        Properties prop = new Properties();
        String dir = System.getProperty("user.dir");
        InputStream in = new FileInputStream(dir + "/myapp/config.properties");
        prop.load(in);
        in.close();
        String filePath = dir + "/myapp/folder_of_file/" + prop.getProperty("file"); /*file contains the file name to read*/
于 2012-06-28T21:11:05.783 に答える
5
Properties property=new Properties();
property.load(new FileInputStream("C:/java/myapp/config.properties"));
于 2017-03-20T09:57:17.337 に答える
3

絶対パスを指定する必要がありますが、開発環境と本番環境などの切り替えが難しくなるため、ハードコーディングしないでください。

コードで System.getProperty("basePath") を使用してアクセスできるシステム プロパティからファイルのベース パスを取得することができます。絶対パスを作成するには、ファイル名の先頭に追加する必要があります。

アプリケーションの実行中に、次のように Java コマンド ラインでパスを指定できます。

java -DbasePath="/a/b/c" ...

... は、プログラムを実行するための Java コマンドへの現在の引数を示します。

于 2015-07-18T07:46:58.190 に答える