Получение пути к файлу в Java - PullRequest
9 голосов
/ 26 мая 2010

Есть ли способ для java-программы определить свое местоположение в файловой системе?

Ответы [ 3 ]

13 голосов
/ 26 мая 2010

Для этого вы можете использовать CodeSource#getLocation(). CodeSource доступно для ProtectionDomain#getCodeSource(). ProtectionDomain в свою очередь доступен по Class#getProtectionDomain().

URL location = getClass().getProtectionDomain().getCodeSource().getLocation();
File file = new File(location.getPath());
// ...

Возвращает точное местоположение Class, о котором идет речь.

Обновление : согласно комментариям, оно, очевидно, уже находится в пути к классам. Затем вы можете просто использовать ClassLoader#getResource(), в котором вы передаете относительный путь к корневому пакету.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("filename.ext");
File file = new File(resource.getPath());
// ...

Вы даже можете получить его как InputStream, используя ClassLoader#getResourceAsStream().

InputStream input = classLoader.getResourceAsStream("filename.ext");
// ...

Это также нормальный способ использования упакованных ресурсов. Если он находится внутри пакета, используйте вместо него, например, com/example/filename.ext.

0 голосов
/ 20 февраля 2014

Для меня это сработало, когда я знал, каково было точное имя файла:

File f = new File("OutFile.txt"); System.out.println("f.getAbsolutePath() = " + f.getAbsolutePath());

Или есть и это решение: http://docs.oracle.com/javase/tutorial/essential/io/find.html

0 голосов
/ 26 мая 2010

, если вы хотите получить «рабочий каталог» для запущенной в данный момент программы, просто используйте:

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