0

TestA プロジェクトの Java クラス ReadFile1。そして、プロジェクト TestB の別のクラス TestRead。私はそのクラス ReadFile1 を TestRead クラスで読みたいと思っています。私は唯一の相対パスを持っています。どうすればそれを読むことができますか。

私のクラスは D:\EIX-New-Source\source\message-kernel\src\main\java\com\eix\transform\parser\MessageTransformer.java にあります

message-kernel は、ソース フォルダー内のプロジェクトです。

そして、私は D:\EIX-New-Source\source\msg-Test\src\com\coreJava\rnd\RelativePath.java でテストを行っています

このプログラムを実行すると、D:\EIX-New-Source\source\message-kernel\target\classes という結果が得られました

しかし、結果は D:\EIX-New-Source\source\message-kernel\src\main\java\com\eix\transform\parser\MessageTransformer.java になるはずです。

4

3 に答える 3

1

クラスファイルの絶対パスを取得するために以下の方法を試してから、相対ファイルパスから残りのパスを追加して、ファイルの実際の絶対パスを取得できます。

String getAbsolutePath(){
java.security.ProtectionDomain pd =
YourClassName.class.getProtectionDomain();
if ( pd == null ) return null;
java.security.CodeSource cs = pd.getCodeSource();
if ( cs == null ) return null;
java.net.URL url = cs.getLocation();
if ( url == null ) return null;
java.io.File f = new File( url.getFile() );
if (f == null) return null;

return f.getAbsolutePath();
}
于 2013-04-18T07:37:04.570 に答える
0

ファイルを読んだ後に何をしたいかについて言及していませんでした。入力ストリームを作成することで、ファイルを読み取ることができます。入力ストリームは相対パスでも機能します。

FileInputStream inputStream = new FileInputStream(new File("../../com/eix/cromics/tdlr/ReadFile1"));

これを Java API として使用する場合は、TestA に対するプロジェクト TestB の依存関係を定義する必要があります。

于 2013-04-18T07:31:55.383 に答える