Сначала спросите себя: является ли ваш файл внутренним компонентом вашего приложения?
(Обычно это означает, что он упакован внутри вашего JAR или WAR, если это веб-приложение; обычно это какой-то файл конфигурации или статический ресурс, только для чтения).
Если ответ положительный, вы не хотите указывать абсолютный путь для файла. Но вы также не хотите обращаться к нему с относительным путем (как ваш пример), потому что Java предполагает, что путь относится к " текущему каталогу ". Обычно предпочтительным способом для этого сценария является его загрузка относительно пути к классам .
Java предоставляет вам метод classLoader.getResource () для этого. И Eclipse (в обычной установке) предполагает, что src/
должен находиться в корне вашего пути к классам, поэтому после компиляции он копирует все в ваш выходной каталог (bin/
), файлы java в скомпилированном виде (.class
), остальное как есть.
Так, например, если вы поместите ваш файл в src/Files/myfile.txt
, он будет скопирован во время компиляции в bin/Files/myfile.txt
; и во время выполнения bin/
будет в (корне) вашего classpath. Итак, позвонив по номеру getResource("/Files/myfile.txt")
(в некоторых его вариантах), вы сможете прочитать его.
Отредактировано : Кроме того, если ваш файл концептуально связан с Java-классом (например, некоторые com.example.MyClass
имеют MyClass.cfg
связанный файл конфигурации), вы можете использовать getResource () метод из класса и использовать относительный путь (ресурса): MyClass.getResource("MyClass.cfg")
. Затем файл будет найден в пути к классам, но с предварительно добавленным пакетом классов. Таким образом, в этом случае вы обычно размещаете файлы MyClass.cfg
и MyClass.java
в одном каталоге.