Я довольно долго искал эту проблему, но все результаты указывают на решения до 7 Java 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)
{
//...
}
В то время как это работает, я надеялся, что есть более простой/лучший способ сделать это с материалами NIO в Java 7. Я предполагаю, что мне нужно получить Path, который представляет этот путь в пути к классам, но я не уверен, как это сделать.
Прошу прощения, если это очень простая вещь. Я просто не могу этого понять. Спасибо за помощь.