私はこれについてかなり長い間グーグルで検索してきましたが、すべての結果は Java 7 以前の NIO ソリューションを指しています。ファイル システムの特定の場所からファイルを読み込むためにNIOを使用しましたが、以前よりもはるかに簡単になりました ( Files.readAllBytes(path)
)。ここで、WAR とクラスパスにパッケージ化されたファイルを読み込もうとしています。現在、次のようなコードでこれを行っています。
Input inputStream = this.getClass().getClassLoader().getResourceAsStream(fileName);
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
/* iterate through the input stream to get all the bytes (no way to reliably find the size of the
* file behind the inputStream (see http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#available()))
*/
int byteInt = -1;
try
{
byteInt = inputStream.read();
while (byteInt != -1)
{
byteStream.write(byteInt);
byteInt = inputStream.read();
}
byteArray = byteStream.toByteArray();
inputStream.close();
return byteArray;
}
catch (IOException e)
{
//...
}
これは機能しますが、Java 7 の NIO でこれを行うためのより簡単でより良い方法があることを望んでいました。クラスパスでこのパスを表すPathオブジェクトを取得する必要があると思いますが、それを行う方法がわからない。
これが非常に簡単なことである場合は申し訳ありません。私はそれを理解することはできません。助けてくれてありがとう。