Класс 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");