0

私は次のディレクトリ構造を持っています:

更新された構造

src
 |
 -test
     |
     -java
     |   |
     |   -SomeXmlTest.java
     |
     -resources
          |
          -someXmlContent.xml

私はその悪い習慣のようなものだと思います:

new File(C:\Project ... \src\resources\someXmlContent.xml)

// or magic dance like that
File currentDir = new File(System.getProperty("user.dir");
File parent = currentDir.getParent();
for (File file:parent.listFiles()){
    //find resources directory and iterate over it files
}

簡単なアノテーションベースのソリューションがあると思います。たとえば、アノテーションに「src \ resources \ someXmlContent.xml」と自動的に書き込み、パスをテストしますが、どうすればよいですか?

4

2 に答える 2

1

ファイルの代わりにリソースを使用します。このようにして、アプリケーションをjarにパックし、jar内のリソースを取得できます。

File/FileInputStreamの代わりにInputStreamを使用します。

InputStream in = getClass().getResourceAsStream("/someXml.xml");

これは、ファイルよりも一般的なソリューションです。

于 2012-12-10T14:50:38.043 に答える
0

その後、コードをリファクタリングできる場合!ファイルではなく入力ストリームを使用する必要があります。次に、メモリストリームで使用します(たとえば、apache commons IOUtils)。このようにすると、外部リソースにアクセスできなくなります

于 2012-12-10T15:40:28.957 に答える