Как получить текущую рабочую директорию в Java?
Проблема доступа к текущему рабочему каталогу в Java
Я пытаюсь получить путь к текущему рабочему каталогу в Java. Вот мой код:
String currentPath = new java.io.File(".").getCanonicalPath();
System.out.println("Текущий каталог: " + currentPath);
String currentDir = System.getProperty("user.dir");
System.out.println("Текущий каталог с использованием System: " + currentDir);
Вывод:
Текущий каталог: C:\WINDOWS\system32
Текущий каталог с использованием System: C:\WINDOWS\system32
Однако мой вывод неверен, так как каталог C не является моим текущим рабочим каталогом.
Вопрос:
Как правильно получить текущий каталог в Java?
5 ответ(ов)
Java 11 и новее
Это решение лучше других и более портативно:
Path cwd = Path.of("").toAbsolutePath();
Или даже
String cwd = Path.of("").toAbsolutePath().toString();
Эти варианты позволяют получить абсолютный путь к текущему рабочему каталогу, используя современный API Java для работы с файлами.
Вот как получить путь к вашему текущему рабочему каталогу:
Path path = FileSystems.getDefault().getPath(".");
А вот как получить путь к файлу с именем "Foo.txt" в рабочем каталоге:
Path path = FileSystems.getDefault().getPath("Foo.txt");
Правка: Чтобы получить абсолютный путь к текущему каталогу:
Path path = FileSystems.getDefault().getPath(".").toAbsolutePath();
* Обновление * Чтобы получить текущий рабочий каталог:
Path path = FileSystems.getDefault().getPath("").toAbsolutePath();
Вот решение, которое мне подошло:
File currentDir = new File("");
Этот код создает объект File
, представляющий текущую директорию.
В Java, выражение this.getClass().getClassLoader().getResource("").getPath()
используется для получения пути к корневой директории ресурсов в проектах. Давайте разберём его по частям:
this.getClass()
- это обращение к объекту текущего класса, из которого вызывается данный код.getClassLoader()
- возвращает класс загрузчик, который используется для загрузки классов и ресурсов.getResource("")
- получает ресурс с указанным именем. В данном случае, пустая строка указывает на корень ресурсов.getPath()
- возвращает путь к этому ресурсу в виде строки.
Обратите внимание, что данный подход может работать по-разному в зависимости от того, как ваша программа упакована и запущена (например, в IDE, jar-файле и т.д.). Если ресурсов нет или они находятся в неправильной директории, может быть возвращен null
, поэтому рекомендуется проверять на наличие ресурса перед использованием.
Вот пример на русском:
String path = this.getClass().getClassLoader().getResource("").getPath();
if (path != null) {
System.out.println("Путь к ресурсам: " + path);
} else {
System.out.println("Ресурс не найден.");
}
Таким образом, это выражение полезно для получения абсолютного пути к ресурсам проекта, чтобы вы могли работать с файлами или другими ресурсами в вашей программе.
Чтобы получить текущую рабочую директорию в виде объекта File
, вы можете использовать следующий метод:
File getCwd() {
return new File("").getAbsoluteFile();
}
Если вы хотите получить полный путь в виде строки, например, "D:/a/b/c", вы можете сделать это, вызвав метод getAbsolutePath()
:
String currentPath = getCwd().getAbsolutePath();
Таким образом, currentPath
будет содержать полный путь к текущей рабочей директории.
Как работают сервлеты? Инстанцирование, сессии, общие переменные и многопоточность
Разница между StringBuilder и StringBuffer
Java 8: Преобразование List<V> в Map<K, V>
Возможные значения конфигурации hbm2ddl.auto в Hibernate и их назначение
Что такое PECS (Producer Extends Consumer Super)?