Поиск…


Синтаксис

  • Paths.get (String first, String ... more) // Создает экземпляр Path своими элементами String
  • Paths.get (URI uri) // Создает экземпляр пути с помощью URI

Создание путей

Класс Path используется для программного представления пути в файловой системе (и поэтому может указывать на файлы, а также на каталоги, даже на несуществующие)

Путь может быть получен с использованием класса-помощника Paths :

Path p1 = Paths.get("/var/www");
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt");
Path p4 = Paths.get("/home", "arthur", "files", "diary.tex");

Получение информации о пути

Информацию о пути можно получить с помощью методов объекта Path :

  • toString() возвращает строковое представление пути

    Path p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"
    
  • getFileName() возвращает имя файла (или, более конкретно, последний элемент пути

    Path p1 = Paths.get("/var/www"); // p1.getFileName() returns "www"
    Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getFileName() returns "HHGTDG.odt"
    
  • getNameCount() возвращает количество элементов, которые образуют путь

    Path p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
    
  • getName(int index) возвращает элемент по данному индексу

    Path p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
    
  • getParent() возвращает путь родительского каталога

    Path p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
    
  • getRoot() возвращает корень пути

    Path p1 = Paths.get("/var/www"); // p1.getRoot().toString() returns "/"
    Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getRoot().toString() returns "C:\\"
    

Пути манипулирования

Присоединение к двум путям

Пути можно объединить с помощью метода resolve() . Прошедший путь должен быть частичным путем, который представляет собой путь, который не включает корневой элемент.

Path p5 = Paths.get("/home/");
Path p6 = Paths.get("arthur/files");
Path joined = p5.resolve(p6);
Path otherJoined = p5.resolve("ford/files");
joined.toString() == "/home/arthur/files"
otherJoined.toString() == "/home/ford/files"

Нормализация пути

Пути могут содержать элементы . (который указывает на каталог, в котором вы сейчас находитесь) и .. (что указывает на родительский каталог).

При использовании в пути, . может быть удален в любое время , без изменения назначения по пути, и .. может быть удален вместе с предыдущим элементом.

С API-интерфейсом Paths это выполняется с использованием .normalize() :

Path p7 = Paths.get("/home/./arthur/../ford/files");
Path p8 = Paths.get("C:\\Users\\.\\..\\Program Files");
p7.normalize().toString() == "/home/ford/files"
p8.normalize().toString() == "C:\\Program Files"

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

Чтобы взаимодействовать с файловой системой, вы используете методы класса Files .

Проверка существования

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

Files.exists(Path path)

а также

Files.notExists(Path path)

!Files.exists(path) необязательно должен быть равен Files.notExists(path) , поскольку существует три возможных сценария:

  • Существование файла или каталога проверено ( exists возврат true а notExists возвращает false в этом случае)
  • Неизвестность файла или каталога verfied ( exists возвращает false а notExists возвращает true )
  • Ни существование, ни отсутствие файла или каталога не могут быть проверены (например, из-за ограничений доступа): Both exists и nonExists возвращают false.

Проверка того, указывает ли путь к файлу или каталогу

Это делается с использованием Files.isDirectory(Path path) и Files.isRegularFile(Path path)

Path p1 = Paths.get("/var/www");
Path p2 = Paths.get("/home/testuser/File.txt");
Files.isDirectory(p1) == true
Files.isRegularFile(p1) == false

Files.isDirectory(p2) == false
Files.isRegularFile(p2) == true

Получение свойств

Это можно сделать, используя следующие методы:

Files.isReadable(Path path)
Files.isWritable(Path path)
Files.isExecutable(Path path)

Files.isHidden(Path path)
Files.isSymbolicLink(Path path)

Получение типа MIME

Files.probeContentType(Path path)

Это пытается получить MIME-тип файла. Он возвращает строку типа MIME, например:

  • text/plain для текстовых файлов
  • text/html для HTML-страниц
  • application/pdf для файлов PDF
  • image/png для файлов PNG

Чтение файлов

Файлы можно читать по байтам и по линиям, используя класс « Files ».

Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
byte[] content = Files.readAllBytes(p2);
List<String> linesOfContent = Files.readAllLines(p2);

Files.readAllLines() необязательно принимает параметр charset в качестве параметра (по умолчанию используется StandardCharsets.UTF_8 ):

List<String> linesOfContent = Files.readAllLines(p2, StandardCharsets.ISO_8859_1);

Написание файлов

Файлы можно записывать укусом и по очереди с использованием класса « Files »

Path p2 = Paths.get("/home/testuser/File.txt");
List<String> lines = Arrays.asList(
    new String[]{"First line", "Second line", "Third line"});

Files.write(p2, lines);
Files.write(Path path, byte[] bytes)

Существующие файлы будут переопределены, будут созданы несуществующие файлы.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow