我已经为此搜索了很长时间,但所有结果都指向 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对象,但我是不知道该怎么做。
如果这是一些超级简单的事情,我深表歉意。我就是想不通。谢谢您的帮助。