Предположим, у меня есть класс Java, которому нужен доступ к файлу с абсолютным путем
/home/gem/projects/bar/resources/test.csv:
package com.example
class Foo {
String filePath = ????? // path to test.csv
String lines = FileInputStream(new File(filePath).readAllLines();
}
Где путь к Foo.java: /home/gem/projects/bar/src/com/example.
Конечно, я не могу указать абсолютный путь к файлу ресурса. Это связано с тем, что файл JAR будет распространяться как библиотека для любых клиентов, которые будут использоваться в их собственных средах.
Предположим, что файл ресурсов, такой как test.csv, всегда находится по одному и тому же пути относительно корня проекта. Когда создается jar-файл, содержащий Foo.class, этот jar-файл также содержит test.csv по тому же относительному пути (относительно корня проекта).
Как указать относительный путь, который будет работать независимо от того, куда перемещена панель проекта? Также, как я могу создать файл JAR (который может быть в любом месте), чтобы путь к файлу ресурса test.csv был по-прежнему правильным.
Для простоты я использовал недопустимый Java API (readAllLines (), который читает все строки и возвращает строку, содержащую все содержимое файла. Также без использования try / catch).
Предположим, что файл CSV может быть прочитан, а также записан.
Надеюсь, теперь все ясно.