1

私はmavenproject(Java)を持っています。

現在、そのプロジェクトにファイルがあります。クラス File のオブジェクトではなく、ファイルです。(実際にはtxt)最終的に、このファイルはjar内にバンドルされます。プロジェクトの実行中にそれを使用したいのですが、そのファイルへの絶対パスが必要です。もちろん、それは私が使用しているコンピューターによって異なります。File オブジェクトについて話している場合は、myfile.getAbsolutePath を使用して絶対パスを見つけるだけです。

その場合のパスを見つける方法もありますか?

4

2 に答える 2

3

このファイルは jar 内にバンドルされます。

そのファイルは、ファイルシステム上でスタンドアロンのファイルではなくなりました。それを排他的に指す一意のファイルシステムパスはありません。

パッケージ化された後のパッケージ化されたファイル (zip に類似) の一部。これが、 class.getResourceAsStream()classLoader.getResourceAsStream( ) などのメソッドが提供される主な理由です。

于 2013-09-10T13:57:02.420 に答える
2

リフレクションが助けになります。あなたはこれを行うことができます:

java.net.URL url = <your class name>.class.getProtectionDomain().getCodeSource().getLocation();

java.io.File file = new java.io.File(url.toURI());

file.toString()絶対パスを教えてくれます。ただし、使用する場合はセキュリティ上の影響があるため、慎重に使用getProtectionDomain()してください。すべてのプラットフォームで動作することを確認してください。

于 2013-09-10T14:01:08.903 に答える