Java NIO Path (с примерами)

Класс Path, представленный в выпуске Java SE 7, является одной из основных точек входа пакета java.nio.file. Если наше приложение использует Java New IO, нам следует узнать больше о мощных функциях, доступных в этом классе.

В этом уроке по Java мы изучим 6 способов создания пути.

Предварительное условие: Я создаю путь для файла в расположении – «C:/Lokesh/Setup/workspace/NIOExamples/src/sample.txt». Я создал этот файл заранее и буду создавать путь к этому файлу во всех примерах.

1. Построение абсолютного пути

Абсолютный путь всегда содержит корневой элемент и полную иерархию каталогов, необходимую для поиска файла. Для доступа к файлу или пути больше не требуется никакой информации.

Чтобы создать абсолютный путь к файлу, используйте метод getPath().

/*** Converts a path string, or a sequence of strings that when joined form a path string,* to a Path. If more does not specify any elements then the value of the first parameter* is the path string to convert. If more specifies one or more elements then each non-empty* string, including first, is considered to be a sequence of name elements and is* joined to form a path string.*/public static Path get(String first, String... more);

Пример 1: Создание абсолютного пути к файлу в Java NIO

Во всех приведенных примерах мы создаем абсолютный путь к одному и тому же файлу разными способами.

//Starts with file store root or drivePath absolutePath1 = Paths.get("C:/Lokesh/Setup/workspace/NIOExamples/src", "sample.txt");Path absolutePath2 = Paths.get("C:/Lokesh/Setup/workspace", "NIOExamples/src", "sample.txt");Path absolutePath3 = Paths.get("C:/Lokesh", "Setup/workspace", "NIOExamples/src", "sample.txt");

2. Построение пути относительно корня хранилища файлов

Путь относительно корня хранилища файлов начинается с символа косой черты(«/»).

Пример 2: Создание относительного пути к указанному файлу

//How to define path relative to file store root(in windows it is c:/)Path relativePath1 = FileSystems.getDefault().getPath("/Lokesh/Setup/workspace/NIOExamples/src", "sample.txt");Path relativePath2 = FileSystems.getDefault().getPath("/Lokesh", "Setup/workspace/NIOExamples/src", "sample.txt");

3. Путь построения относительно текущего рабочего каталога

Чтобы определить путь относительно текущего рабочего каталога, не используйте ни корень файловой системы(c:/ в Windows), ни косую черту(«/»).

Пример 3: Создание относительного пути к текущему рабочему каталогу

В данном примере текущим рабочим каталогом является NIOExamples.

//How to define path relative to current working directoryPath relativePath1 = Paths.get("src", "sample.txt");

4. Построение пути из схемы URI

Нечасто, но иногда мы можем столкнуться с ситуацией, когда нам нужно преобразовать путь к файлу в формате «file:///src/someFile.txt» в путь NIO.

Пример 4: Получение абсолютного пути к файлу с помощью URI файла в Java NIO

//Writing c:/ is optional//URI uri = URI.create("file:///c:/Lokesh/Setup/workspace/NIOExamples/src/sample.txt");URI uri = URI.create("file:///Lokesh/Setup/workspace/NIOExamples/src/sample.txt");String scheme = uri.getScheme();if(scheme == null)throw new IllegalArgumentException("Missing scheme");//Check for default provider to avoid loading of installed providersif(scheme.equalsIgnoreCase("file")){String absPath = FileSystems.getDefault().provider().getPath(uri).toAbsolutePath().toString();System.out.println(absPath);}//If you do not know scheme then use this code.//This code check file scheme as well if available.for(FileSystemProvider provider: FileSystemProvider.installedProviders()){if(provider.getScheme().equalsIgnoreCase(scheme)){String absPath = provider.getPath(uri).toAbsolutePath().toString();System.out.println(absPath);}}

5. Построение пути с использованием файловой системы по умолчанию

Это еще одна вариация приведенных выше примеров, где вместо использования Paths.get() мы можем использовать метод FileSystems.getDefault().getPath().

Правила для абсолютных и относительных путей такие же, как и в приведенных выше методах.

Пример 5: Получение абсолютного пути к файлу с использованием системных настроек по умолчанию

FileSystem fs = FileSystems.getDefault();//relative pathPath path1 = fs.getPath("src/sample.txt");//absolute pathPath path2 = fs.getPath("C:/Lokesh/Setup/workspace/NIOExamples/src", "sample.txt");

6. Построение пути с помощью System.getProperty()

Ну, это не по теме, но знать полезно. Мы можем использовать системно-специфический System.getProperty() также для построения Path для определенных файлов.

Пример 6: Получить путь к файлу в системной папке загрузок

Path path1 = FileSystems.getDefault().getPath(System.getProperty("user.home"), "downloads", "somefile.txt");
Прокрутить вверх