Проблемы при использовании getResource () с txt-файлом (Java) - PullRequest
1 голос
/ 14 марта 2012

У меня есть настройка, в которой я использую текстовый файл (как чтение, так и запись в него) в моей программе. В настоящее время он настроен так, что я использую локальный путь к файлу на моей машине, однако мне нужно упаковать его в исполняемый JAR. Для этого я попытался переключить строку filepath на следующее:

String filepath = MyClass.class.getResource("/resources/textfile.txt");

Однако, когда я запускаю это, я получаю кучу ошибок. После поиска в Google, я нашел похожий метод getResourceAsStream, который я тоже попробовал. Кажется, это возвращает объект InputStream, однако в идеале мне нужен путь к файлу в виде строки. Это возможно? Если нет, какие у меня варианты?

Дополнительная информация:

Вот сообщения об ошибках, которые я получаю при попытке чтения и записи в текстовый файл:

java.io.FileNotFoundException:/Users/Fred/Documents/Eclipse%20Projects/RandomProject/bin/resources/textfile.txt (No such file or directory)

Ответы [ 4 ]

3 голосов
/ 14 марта 2012

Хорошо, код, который вы дали, не скомпилируется, потому что Class.getResource возвращает URL, а не String.Вы не можете рассматривать ресурс как «просто другой файл» - потому что это не так.

Вы должны в основном изменить все, что нужно, на прочитать файл, чтобы принять InputStream вместо имени файла, а затем передать результат вызова getResourceAsStream().

1 голос
/ 14 марта 2012

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

Только для чтения, ресурс может находиться в Jar на пути к классам приложения.Очень редко (в производстве) ресурсы для пути к классам приложений доступны для записи.Этот текстовый файл, скорее всего, нужно будет поместить в воспроизводимый путь (например, подкаталог user.home - где подкаталог основан на имени пакета) и использовать как File из этого пути.*

Или, говоря иначе.Я думаю, что вы идете по неверному пути, чтобы достичь цели.

1 голос
/ 14 марта 2012

Метод возвращает URL, а не String.Его подпись public URL getResource(String name)

Возможно, вы захотите сделать:

String filepath = MyClass.class.getResource("/resources/textfile.txt").getPath();
0 голосов
/ 14 марта 2012

Если вы ожидаете, что будете напрямую писать в текстовый файл внутри JAR, мой друг, вы ошибаетесь до конца!Пожалуйста, опубликуйте еще немного кода, чтобы мы могли понять, чего именно вы хотите достичь и как, по вашему мнению, это можно сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...