Относительный путь Java в NetBeans - PullRequest
4 голосов
/ 12 августа 2011

Я занимаюсь разработкой модуля NetBeans, в котором у меня есть пакет Java с именем test и другой пакет с именем test.templates.Я хочу прочитать текстовый файл в пакете test.templates из файла Java в тестовом пакете.Я пытался несколькими способами, но это дает исключение FileNotFoundException:

BufferedReader br = new BufferedReader(new FileReader("templates/test.txt"));
BufferedReader br = new BufferedReader(new FileReader("/test/templates/test.txt"));
BufferedReader br = new BufferedReader(new FileReader("src/test/templates/test.txt"));

Но ни один из них не сработал .. Я хочу использовать относительный путь, а не абсолютный путь.Что мне делать?

Ответы [ 4 ]

3 голосов
/ 11 июля 2015

Вы должны отметить кое-что об относительном пути (Netbeans):

+ Файл: по умолчанию это папка проекта, значит вне папки src.
Если вы сохраните в test.txt, он сгенерирует: project/test.txt.
Если вы сохраните в data/test.txt, ... project/data/test.txt
Так что если вы хотите загрузить файл, вы просто делаете это наоборот. Таким образом, вы должны поместить свои файлы в project / data / filename.txt. Затем, когда код, вы получите путь: data/filename.txt.

+ ImageIcon: я поделюсь позже, если смогу.
+ Изображение (SplashScreen): я поделюсь позже.

3 голосов
/ 12 августа 2011

Вы хотите использовать getResource или getResourceAsStream.

Пример на java2s.com:

http://www.java2s.com/Code/Java/Development-Class/Loadresourcefilerelativetotheclasslocation.htm

1 голос
/ 01 ноября 2013

getResource() возвращает URL, поэтому для извлечения имени файла вы можете попробовать позвонить getFile().

Путь к файлу, который вы передаете getResource, будет основан на вашем пакете netbeans. Используйте начальную косую черту для обозначения корня пути к классам.

Пример:

getResource(/db_files/table.csv).getFile()
0 голосов
/ 21 августа 2012
try
{
BufferedReader br = new BufferedReader(new FileReader(getClass().getResource("/test/templates/test.txt").toString().substring(6)));
}
catch(Exception ee)
{
JOptionPane.showMessageDialog(this, ee);   
}
...