Прочитать файл в другом каталоге, просто указав имя файла (через папку ресурсов)

1

Я пытаюсь реализовать простой обходной путь для чтения файла в каталоге ресурсов

Структура моей папки выглядит следующим образом:

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.

Я действительно не хочу полностью указывать путь к файлу. (передавая только имя файла).

Благодаря !!!

  • 0
    Вы не хотите абсолютного пути, но пробовали ли вы относительный путь? Что-то вроде "../../resources/com.tester.stackoverflow/Testing.txt" должно сработать.
  • 0
    Ну, я ищу решение, которое просто передает имя файла.
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Если каталог ресурсов добавлен в ваш путь к классам (например, в определении проекта в Eclipse или pom.xml), вы можете использовать getResourceAsStream а не новый FileInputStream().
Если вы также хотите получить имя пакета из текущего класса, это тоже возможно, но немного сложнее: this.getClass().getPackage().toString() или BufferedExample.class.getPackage().toString().
И затем вы можете добавить имя пакета в имя файла, прежде чем говорить getResourceAsStream.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню