タグ付けされた質問 「getresource」

7
Class.getResource()とClassLoader.getResource()の違いは何ですか?
私は違いが間にあるのだろうかClass.getResource()とClassLoader.getResource()? 編集:特にキャッシュがファイル/ディレクトリレベルで行われているかどうかを知りたいです。「クラスのバージョンではディレクトリのリストがキャッシュされますか?」のように 私の知る限り、以下は本質的に同じことをするはずですが、そうではありません: getClass().getResource() getClass().getClassLoader().getResource() WEB-INF/classes/そのディレクトリの既存のファイルから新しいファイルを作成するレポート生成コードをいじるときに、これを発見しました。Classのメソッドを使用すると、を使用してデプロイメント時に存在していたファイルを見つけることができましたがgetClass().getResource()、新しく作成されたファイルをフェッチしようとすると、nullオブジェクトを受け取りました。ディレクトリを参照すると、新しいファイルがそこにあることがはっきりとわかります。ファイル名の先頭には、「/ myFile.txt」のようにスラッシュが付いています。 一方、のClassLoaderバージョンでgetResource()は、生成されたファイルが見つかりました。この経験から、ディレクトリリストのキャッシュが行われているようです。私は正しいですか、そうであれば、これはどこに文書化されていますか? 上のAPIドキュメントからClass.getResource() 指定された名前のリソースを検索します。特定のクラスに関連付けられているリソースを検索するためのルールは、クラスの定義クラスローダーによって実装されます。このメソッドは、このオブジェクトのクラスローダーに委譲します。このオブジェクトがブートストラップクラスローダーによってロードされた場合、メソッドはClassLoader.getSystemResource(java.lang.String)に委譲します。 私には、これは「Class.getResourceが実際に独自のクラスローダーのgetResource()を呼び出している」と読みます。これはと同じgetClass().getClassLoader().getResource()です。しかし、明らかにそうではありません。誰かが私にこの問題についていくつかの照明を提供してくれませんか?

16
JARファイル内のファイルをリストする方法は?
ディレクトリからすべてのファイルを読み取るこのコードがあります。 File textFolder = new File("text_directory"); File [] texFiles = textFolder.listFiles( new FileFilter() { public boolean accept( File file ) { return file.getName().endsWith(".txt"); } }); それは素晴らしい働きをします。ディレクトリ「text_directory」の「.txt」で終わるすべてのファイルを配列に入力します。 内の同じような方法でディレクトリの内容を読み取るにはどうすればよいですかJARファイルですか? だから私が本当にやりたいことは、JARファイル内のすべての画像をリストすることです。 ImageIO.read(this.getClass().getResource("CompanyLogo.png")); (「CompanyLogo」は「ハードコード」されているため機能しますが、JARファイル内の画像の数は10から200の可変長になる可能性があります。) 編集 私の主な問題は次のようになると思います:JARファイルの名前を知る方法メインクラスは? 確かに私はそれを使ってそれを読むことができた java.util.Zip。 私の構造は次のようなものです: 彼らは次のようなものです: my.jar!/Main.class my.jar!/Aux.class my.jar!/Other.class my.jar!/images/image01.png my.jar!/images/image02a.png my.jar!/images/imwge034.png my.jar!/images/imagAe01q.png my.jar!/META-INF/manifest 今のところ、例えば "images / image01.png"をロードすることができます: ImageIO.read(this.getClass().getResource("images/image01.png)); しかし、ファイル名がわかっているという理由だけで、残りのファイルは動的にロードする必要があります。
114 java  file  jar  java-io  getresource 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.