これは、特定のURLオブジェクトが指している先のファイルオブジェクトを取得するための最も簡単なワットです:内のすべてのリソースを見つけること
BLAという名前のすべてのリソースこのURLに
Enumeration<URL> en=getClass().getClassLoader().getResources("META-INF");
if (en.hasMoreElements()) {
URL metaInf=en.nextElement();
File fileMetaInf=new File(metaInf.toURI());
File[] files=fileMetaInf.listFiles();
//or
String[] filenames=fileMetaInf.list();
}
- を指しているFileオブジェクトを取得編。XML (recursivly)この場合
、あなたはいくつかのカスタムコードを行う必要があるでしょう。ここではダミーの例である:
final List<File> foundFiles=new ArrayList<File>();
FileFilter customFilter=new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory()) {
pathname.listFiles(this);
}
if(pathname.getName().endsWith("bla.xml")) {
foundFiles.add(pathname);
return true;
}
return false;
}
};
//rootFolder here represents a File Object pointing the root forlder of your search
rootFolder.listFiles(customFilter);
コードが実行されると、あなたはfoundFiles
一覧で見つかったすべてのocurrencesを取得します。ここで
@Andrew、フレームワークの多くは、反復のためにストライプのActionBeansやhibernate用のhbm.xmlファイルの検索など、いくつかのプロセスを自動化するアーカイブ内の名前や拡張子に基づいたファイル – bestsss
http://stackoverflow.com/questions/1429172/how-do-i-list-the-files-inside-a-jar-file/ – Vadzim
なぜあなたが混乱するのは、getResourcesがクラスローダーで動作することです。クラスパスに複数のJARを持つことができます。したがって、同じリソースを持つ複数のJARがある場合は、すべて取得します。ただし、ディレクトリ内を検索することは意図していません。 getResources( "META-INF")を使用すると、CLの検索パスにすべてのMETA-INFOディレクトリがあり、CLが単一のjarファイルクラスローダーの場合、最大で1つのエントリが取得されます。 – eckes