Сегодня мы рассмотрим путь к файлу в Java. Путь к файлу в Java может быть абстрактным, абсолютным или каноническим.
Путь к файлу в Java
java.io.File
содержит три метода для определения пути к файлу, которые мы рассмотрим в этом учебнике.
getPath()
: Этот метод пути к файлу возвращает абстрактный путь к имени файла в виде строки. Если для создания объекта File используется строковый путь, он просто возвращает аргумент пути. Если в качестве аргумента используется URI, то он удаляет протокол и возвращает имя файла.getAbsolutePath()
: Этот метод пути к файлу возвращает абсолютный путь к файлу. Если файл создан с абсолютным путем, он просто возвращает путь к файлу. Если объект файла создан с использованием относительного пути, абсолютный путь к файлу определяется способом, зависящим от системы. На системах UNIX относительный путь делается абсолютным путем, разрешая его относительно текущего пользовательского каталога. На системах Microsoft Windows относительный путь делается абсолютным путем, разрешая его относительно текущего каталога диска, указанного в пути, если он есть; если нет, то относительный путь разрешается относительно текущего пользовательского каталога.[getCanonicalPath](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath())()
: Этот метод пути возвращает канонический путь, который является как абсолютным, так и уникальным. Этот метод сначала преобразует этот путь в абсолютную форму при необходимости, как если бы он вызывал метод getAbsolutePath, а затем отображает его в уникальную форму способом, зависящим от системы. Обычно это включает удаление из пути избыточных имен, таких как “.” и “..”, разрешение символических ссылок (на платформах UNIX) и преобразование букв дисков в стандартный регистр (на платформах Microsoft Windows).
Пример пути к файлу в Java
Давайте рассмотрим различные случаи пути к файлу в Java с помощью простой программы.
package com.journaldev.files;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class JavaFilePath {
public static void main(String[] args) throws IOException, URISyntaxException {
File file = new File("/Users/pankaj/test.txt");
printPaths(file);
// относительный путь
file = new File("test.xsd");
printPaths(file);
// сложные относительные пути
file = new File("/Users/pankaj/../pankaj/test.txt");
printPaths(file);
// URI-пути
file = new File(new URI("file:///Users/pankaj/test.txt"));
printPaths(file);
}
private static void printPaths(File file) throws IOException {
System.out.println("Absolute Path: " + file.getAbsolutePath());
System.out.println("Canonical Path: " + file.getCanonicalPath());
System.out.println("Path: " + file.getPath());
}
}
На рисунке ниже показан вывод, созданный вышеуказанной программой пути к файлу в Java. Вывод сам по себе пояснителен. Исходя из вывода, использование канонического пути наилучшим образом подходит для избежания любых проблем из-за относительных путей. Также обратите внимание, что методы пути к файлу в Java не проверяют, существует ли файл или нет. Они просто работают с именем файла, использованным при создании объекта File. Это все для различных типов пути к файлу в Java.
Вы можете ознакомиться с большим количеством примеров ввода-вывода на языке Java в нашем репозитории GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-file-path-absolute-canonical