Java получить текущую директорию

Get current directory path in java

Getting the path of current directory is often required when you need to access some files from code generally for reading text or properties files.

This article will explain 4 different ways to get the path of current working directory in java or from java code.

Method 1 : Using System property
Java has defined some properties which are used to get information about its environment. One of such property is user.dir which gives the path of current working directory.

In order to retrieve the value of java properties, getProperty() method of java.lang.System class is used. This method is static and takes a string argument, which is the name of property.
Example,

String currentPath = System.getProperty("user.dir"); System.out.println("Current path is:: " + currentPath);

If you run this code from an IDE such as eclipse, then it will return the absolute path of the current project.

Method 2 : Using File class
java.io.File class has a constructor which takes a string argument. This argument represents the path to which the file object points.

Providing an empty path means that the file object is pointed to the current folder. Invoke getAbsolutePath() on the file object to get the complete path of current directory as shown below.

// create file object for current folder File file = new File(""); String currentPath = file.getAbsolutePath(); System.out.println("Current path is:: " + currentPath);

Method 3 : Using Paths
java.nio.file.Paths class introduced in java 7 is a utility class that contains static methods related to paths. It has a static get() method which takes a string argument representing a file path and returns an object of java.nio.file.Path .

Читайте также:  Css section width 100

Supplying empty string to get() means the current working directory.
Path object points to a physical file and its toAbsolutePath() method returns another Path object containing the absolute path of the file.

Invoke toString() method on this Path object to get the path of current working directory.
Java program code for this method is given below.

Path currentDirectoryPath = Paths.get("").toAbsolutePath(); String currentPath = currentDirectoryPath.toString(); System.out.println("Current directory path:: " + currentPath);

Method 4 : Using FileSystems class
For dealing with file system, java provides a class java.nio.file.FileSystem . Object of FileSystem can be retrieved using java.nio.file.FileSystems class using its static getDefault() method.

FileSystem has a getPath() method which takes a string argument representing the path of a file.
Supplying it an empty string means the current directory.
getPath() returns an object of Path and you can use its toAbsolutePath() method to get the full path of current directory.
Example,

FileSystem fileSystem = FileSystems.getDefault(); Path path = fileSystem.getPath("").toAbsolutePath() String currentDirectoryPath = path.toString();

Above code can be written as one-liner

String currentDirectoryPath = FileSystems.getDefault(). getPath(""). toAbsolutePath(). toString();

Hope the article was useful, click the clap below if you liked it.

Источник

Получить текущий рабочий каталог на Java

Изучите различные способы извлечения текущего рабочего каталога на Java.

1. Обзор

Получить текущий рабочий каталог на Java-простая задача, но, к сожалению, в JDK нет прямого API, доступного для этого.

В этом уроке мы узнаем, как получить текущий рабочий каталог на Java с помощью java.lang. Система , java.io.Файл, java.nio.файл.Файловые системы, и java.nio.файл.Пути .

2. Система

Давайте начнем со стандартного решения с использованием System#getProperty , предполагая, что наше текущее имя рабочего каталога Baeldung во всем коде:

static final String CURRENT_DIR = «Baeldung»; @Test void whenUsingSystemProperties_thenReturnCurrentDirectory()

Мы использовали встроенный ключ свойств Java user.dir для извлечения текущего рабочего каталога из карты свойств System . Это решение работает во всех версиях JDK.

3. Файл

Давайте рассмотрим другое решение с использованием java.io.Файл :

@Test void whenUsingJavaIoFile_thenReturnCurrentDirectory()

Здесь Файл#getAbsolutePath внутренне использует System#getProperty для получения имени каталога, аналогичного нашему первому решению. Это нестандартное решение для получения текущего рабочего каталога, и оно работает во всех версиях JDK.

4. Файловые системы

Другой допустимой альтернативой было бы использование нового файла java.nio..Файловые системы API:

@Test void whenUsingJavaNioFileSystems_thenReturnCurrentDirectory()

Это решение использует новый Java NIO API и работает только с JDK 7 или выше .

5. Пути

И, наконец, давайте рассмотрим более простое решение для получения текущего каталога с помощью java.nio.file.Пути API:

@Test void whenUsingJavaNioPaths_thenReturnCurrentDirectory()

Здесь Пути#get внутренне использует файловую систему#getPath для извлечения пути. Он использует новый Java NIO API , поэтому это решение работает только с JDK 7 или выше .

6. Заключение

В этом уроке мы рассмотрели четыре различных способа получения текущего рабочего каталога на Java. Первые два решения работают во всех версиях JDK, в то время как последние два работают только с JDK 7 или выше.

Мы рекомендуем использовать решение System , поскольку оно эффективно и просто, мы можем упростить его, заключив этот вызов API в метод статической утилиты и получив к нему прямой доступ.

Исходный код этого руководства доступен на GitHub – это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.

Источник

Получение текущей рабочей директории в Java

Возникает частая потребность в программировании на Java получить текущую рабочую директорию. Это может быть полезно, например, при работе с файлами и каталогами.

Вот простой пример, который пытается получить текущую рабочую директорию:

String currentPath = new java.io.File(".").getCanonicalPath(); System.out.println("Current dir:" + currentPath); String currentDir = System.getProperty("user.dir"); System.out.println("Current dir using System:" + currentDir);

В результате выполнения этого кода может быть получен вывод, который не соответствует ожидаемому. Например, вместо директории проекта может быть получена системная директория.

Это происходит потому, что «.» обозначает текущую директорию в контексте процесса, запустившего Java-приложение. Если приложение было запущено из системной директории, то именно она и будет возвращена.

Вместо этого можно использовать свойство системы «user.dir» , которое возвращает текущую рабочую директорию пользователя.

Таким образом, правильный способ получить текущую рабочую директорию в Java следующий:

String currentDir = System.getProperty("user.dir"); System.out.println("Current dir using System:" + currentDir);

Этот код вернет директорию, из которой было запущено Java-приложение, что и является ожидаемым результатом для большинства случаев.

Надеюсь, этот материал был полезен и помог разобраться в тонкостях работы с файловой системой в Java.

Источник

Оцените статью