Java: getCodeBase () в приложении без апплета - PullRequest
2 голосов
/ 03 января 2012

Я пытаюсь создать URL для доступа к локальному файлу следующим образом:

URL myURL = new URL(getCodeBase(), "somefile.txt");

Но при попытке getCodeBase () он генерирует исключение NullPointerException.Я совершенно уверен, что причина этого в том, что файл класса, к которому принадлежит этот код, не является апплетом.Есть ли способ получить базу кода без использования апплета?Я просто хочу получить доступ к локальному файлу без необходимости помещать фактический каталог (потому что, когда другие запускают приложение, путь к каталогу, очевидно, не будет таким же).

Ответы [ 4 ]

4 голосов
/ 03 января 2012

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

URL myURL = new URL("file:somefile.txt");

или

URL myURL = new URL("file", "", "somefile.txt");

или

File file = new File("somefile.txt");
1 голос
/ 03 января 2012

Если somefile.txt только для чтения, поместите его в Jar-файл, который находится на пути к классам приложения. Доступ к нему с помощью:

URL urlToText = this.getClass().getResource("/path/to/somefile.txt");

Если это чтение / запись:

  • Проверьте известный подкаталог user.home для файла.
  • Если не там, положите его туда (извлекая из банки).
  • Чтение / запись в файл с известным путем.
1 голос
/ 03 января 2012

Вам не нужно получать кодовую базу. Если файл находится на вашем пути к классам (включая путь, в котором развернуты ваши классы), вы можете получить доступ к методу ClassLoader getSystemResource .

URL myURL = ClassLoader.getSystemResource("somefile.txt");
0 голосов
/ 03 января 2012

См. Как создать папку в Java Публикация, в которой задан очень похожий вопрос.

Как сказал выше Томас Наррос, правильный способ сделать это - использовать ClassLoader для поиска файлов ресурсов в Classpath. Путь, который вы передаете ClassLoader, относится к пути к классам, который был задан при запуске приложения Java.

Если вы перейдете по вышеуказанной ссылке, вы увидите пример кода, показывающий, как разрешить путь к файлу в вашем пути к классам.

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