Я пытаюсь реализовать простой обходной путь для чтения файла в каталоге ресурсов
Структура моей папки выглядит следующим образом:
src
|
|------test
| |
| -----com.tester.stackoverflow (package name)
| |
| ----BufferedExample.java
|------resources
| | -----com.tester.stackoverflow (package name)
| ----Testing.txt
Я пытаюсь прочитать файл с именем "Testing.txt"
У меня есть общий файловый ресурс, который совсем другой пакет, который читает файл. (код scala)
package com.tester.utility
object FileHelper
{
def read(file: File) : Array[Byte] =
{
val inputStream = new FileInputStream(file)
try
{
val buffer = ListBuffer[Byte]()
var bytes = inputStream.read()
while (bytes != -1)
{
buffer.append(bytes.byteValue)
bytes = inputStream.read()
}
buffer.toArray
}
catch
{
case ex: Exception =>
{
ex.printStackTrace
throw ex
}
}
finally
{
inputStream.close
}
}
}
BufferedExample должен прочитать файл Testing.txt из папки ресурсов с тем же пакетом. Поэтому я передаю объект объекта файла в моем коде выше. Но я не могу найти файл test.txt непосредственно из BufferedExample.java.
Я действительно не хочу полностью указывать путь к файлу. (передавая только имя файла).
Благодаря !!!
Если каталог ресурсов добавлен в ваш путь к классам (например, в определении проекта в Eclipse или pom.xml), вы можете использовать getResourceAsStream
а не новый FileInputStream()
.
Если вы также хотите получить имя пакета из текущего класса, это тоже возможно, но немного сложнее: this.getClass().getPackage().toString()
или BufferedExample.class.getPackage().toString()
.
И затем вы можете добавить имя пакета в имя файла, прежде чем говорить getResourceAsStream
.