4

Javaアプリケーションが「インストール」されているフォルダへの相対パスを見つける最良の方法は何ですか?

私は静的メソッドを持つクラスを持っています:public static void saveToFile(String fileName)

絶対パスで呼び出すと機能しますが、本当に必要なのは、アプリケーションの実行元とフォルダーへの相対パスです。

アプリケーションをデプロイしていませんが、現在、(Netbeans) プロジェクト ルートへの相対パスと、データ内のフォルダーProjectName\data\file.datを見つけたいと考えています。Fileクラスを使用するか、URIまたは何かにする必要がありますか?

システムに依存しないことを好み、アプリケーションがデプロイされた場合でも機能することに注意してください。最終的に、(相対) パス名はプロパティファイルに格納されます。

この質問が重複している場合は申し訳ありませんが、助けていただければ幸いです。

4

5 に答える 5

5

Javaアプリケーションが「インストール」されているフォルダへの相対パスを見つける最良の方法は何ですか?

OS メーカーは長い間、アプリケーション ディレクトリにファイルを保存しないように言い続けてきました。

システムに依存しないことを好み、アプリケーションがデプロイされた場合でも機能することに注意してください。

代わりに を の に入れFileます。ユーザーホームは、読み取りまたは書き込みが可能なファイルオブジェクトを確立できる場所です。また、実行間で再現可能で、プラットフォームに依存しない場所でもあります。sub-directoryuser.home

于 2012-04-16T19:23:24.727 に答える
2

jar としてデプロイする場合、現在のコードが動作している jar ファイル名とパスを次のように取得できます。

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

実行中のJARファイルのパスを取得する方法から

于 2012-04-16T18:23:06.820 に答える
2

どうぞ:

String path = System.getProperty("user.dir");
于 2013-01-05T02:56:08.107 に答える
1

現在の作業ディレクトリへの相対パスを見つけるには、次のように言いnew File(".")ます。

現在の作業ディレクトリの絶対パスを知りたい場合は、new File(".").getAbsolutePath()または File(".").getAbsoluteFile()`.

これがあなたの質問に答えることを願っています。正しく理解できていなかったら申し訳ありません。

于 2012-04-16T18:22:01.900 に答える
0

ファイルへの絶対パスを取得するには、new File().getCanonicalFile() を使用します。

new FileOutputStream(new File(".\\target\\dataset.xml").getCanonicalFile())
于 2015-12-01T14:06:30.800 に答える