Интерфейс SecureDirectoryStream<T>

Все суперинтерфейсы:
AutoCloseable, Closeable, DirectoryStream<T>, Iterable<T>
public interface SecureDirectoryStream<T>
extends DirectoryStream<T>

Интерфейс, определяющий операции над файлами, расположенными относительно открытого каталога. Интерфейс предназначен для использования в сложных или требующих повышенной безопасности приложениях, которым необходимо перебирать древовидную структуру файлов или иначе работать с каталогами без гонок. Гонки могут возникнуть, когда последовательность операций с файлами не может быть выполнена изолированно. Каждая из определенных этим интерфейсом операций с файлами указывает относительный путь. Все доступ к файлам относительны к открытому каталогу, независимо от того, перемещен или заменен ли каталог злоумышленником во время его открытия. Интерфейс также может использоваться в качестве виртуального рабочего каталога.

Интерфейс требует соответствующей поддержки от underlying операционной системы. В случае, когда реализация поддерживает эти возможности, объект DirectoryStream , возвращаемый методом newDirectoryStream, будет объектом типа SecureDirectoryStream и должен быть преобразован к этому типу для вызова методов, определенных этим интерфейсом.

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

С:
1.7

Вложенные классы

Вложенные классы/интерфейсы, объявленные в интерфейсе java.nio.file.DirectoryStream

DirectoryStream.Filter<T>

Методы

Модификатор и тип Метод Описание
void deleteDirectory​(T path)

Удаляет каталог.

void deleteFile​(T path)

Удаляет файл.

<V extends FileAttributeView>
V
getFileAttributeView​(Class<V> type)

Возвращает новое представление атрибутов файла для доступа к атрибутам файла этого каталога.

<V extends FileAttributeView>
V
getFileAttributeView​(T path, Class<V> type, LinkOption... options)

Возвращает новое представление атрибутов файла для доступа к атрибутам файла в этом каталоге.

void move​(T srcpath, SecureDirectoryStream<T> targetdir, T targetpath)

Перемещает файл из этого каталога в другой каталог.

SeekableByteChannel newByteChannel​(T path, Set<? extends OpenOption> options, FileAttribute<?>... attrs)

Открывает или создаёт файл в этом каталоге, возвращая доступный к поиску байтовый канал для доступа к файлу.

SecureDirectoryStream<T> newDirectoryStream​(T path, LinkOption... options)

Открывает каталог, идентифицируемый заданным путем, возвращая объект SecureDirectoryStream для перебора элементов в каталоге.

Методы, объявленные в интерфейсе java.io.Closeable

close

Методы, объявленные в интерфейсе java.nio.file.DirectoryStream

iterator

Методы, объявленные в интерфейсе java.lang.Iterable

forEach, spliterator

Методы

newDirectoryStream

SecureDirectoryStream<T> newDirectoryStream(T path,
                                            LinkOption... options)
                                     throws IOException

Открывает директорию, идентифицированную заданным путём, возвращая SecureDirectoryStream для итерации по записям в директории.

Этот метод работает точно так же, как и метод newDirectoryStream в случае, если параметр path является absolute путём. Если параметр — относительный путь, то открываемая директория относительна к этой открытой директории. Опция NOFOLLOW_LINKS может быть использована для обеспечения того, что этот метод завершится ошибкой, если файл является символической ссылкой.

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

Параметры:
path - путь к открываемой директории
options - опции, указывающие, как обрабатываются символические ссылки
Возвращает:
новый и открытый SecureDirectoryStream объект
Исключения:
ClosedDirectoryStreamException - если поток директории закрыт
NotDirectoryException - если файл не может быть открыт, так как он не является директорией (необязательное специфическое исключение)
IOException - если произошла ошибка ввода-вывода
SecurityException - В случае использования стандартного поставщика и установленного менеджера безопасности, вызывается метод checkRead для проверки доступа для чтения к директории.

newByteChannel

SeekableByteChannel newByteChannel(T path,
                                   Set<? extends OpenOption> options,
                                   FileAttribute<?>... attrs)
                            throws IOException

Открывает или создаёт файл в этой директории, возвращая доступный для поиска байтовый канал для доступа к файлу.

Этот метод работает точно так же, как и метод Files.newByteChannel в случае, если параметр path является absolute путём. Если параметр — относительный путь, то открываемый или создаваемый файл относителен к этой открытой директории. В дополнение к опциям, определённым методом Files.newByteChannel, может использоваться опция NOFOLLOW_LINKS для обеспечения того, что этот метод завершится ошибкой, если файл является символической ссылкой.

После создания канал не зависит от потока директории, использовавшегося для его создания. Закрытие этого потока директории не влияет на канал.

Параметры:
path - путь к файлу для открытия или создания
options - опции, определяющие, как открывается файл
attrs - необязательный список атрибутов для установки атомарно при создании файла
Возвращает:
байтовый канал для поиска
Исключения:
ClosedDirectoryStreamException - если поток директории закрыт
IllegalArgumentException - если набор содержит недопустимую комбинацию опций
UnsupportedOperationException - если указана неподдерживаемая опция открытия или массив содержит атрибуты, которые не могут быть установлены атомарно при создании файла
FileAlreadyExistsException - если файл с таким именем уже существует, и указана опция CREATE_NEW (необязательное специфическое исключение)
IOException - если произошла ошибка ввода-вывода
SecurityException - В случае использования стандартного поставщика и установленного менеджера безопасности, вызывается метод checkRead для проверки доступа для чтения к пути, если файл открыт для чтения. Вызывается метод checkWrite для проверки доступа для записи к пути, если файл открыт для записи.

deleteFile

void deleteFile(T path)
         throws IOException

Удаляет файл.

В отличие от метода delete(), этот метод не проверяет сначала, является ли файл директорией. Является ли директория удалённой этим методом зависит от системы и, следовательно, не специфицировано. Если файл является символической ссылкой, то удаляется сама ссылка, а не конечная цель ссылки. Если параметр — относительный путь, то удаляемый файл относителен к этой открытой директории.

Параметры:
path - путь к удаляемому файлу
Исключения:
ClosedDirectoryStreamException - если поток директории закрыт
NoSuchFileException - если файл не существует (необязательное специфическое исключение)
IOException - если произошла ошибка ввода-вывода
SecurityException - В случае использования стандартного поставщика и установленного менеджера безопасности, вызывается метод checkDelete для проверки доступа для удаления к файлу

deleteDirectory

void deleteDirectory(T path)
              throws IOException

Удаляет директорию.

В отличие от метода delete(), этот метод не проверяет сначала, является ли файл директорией. Является ли директория удалённой этим методом зависит от системы и, следовательно, не специфицировано. Если параметр — относительный путь, то удаляемая директория относительна к этой открытой директории.

Параметры:
path - путь к удаляемой директории
Исключения:
ClosedDirectoryStreamException - если поток директории закрыт
NoSuchFileException - если директория не существует (необязательное специфическое исключение)
DirectoryNotEmptyException - если директория не может быть удалена, так как она не пустая (необязательное специфическое исключение)
IOException - если произошла ошибка ввода-вывода
SecurityException - В случае использования стандартного поставщика и установленного менеджера безопасности, вызывается метод checkDelete для проверки доступа для удаления к директории

move

void move(T srcpath,
          SecureDirectoryStream<T> targetdir,
          T targetpath)
   throws IOException

Перемещает файл из этой директории в другую директорию.

Этот метод работает аналогично методу move, когда указана опция ATOMIC_MOVE. То есть, этот метод перемещает файл как атомарную операцию файловой системы. Если параметр srcpath является absolute путём, то он определяет исходный файл. Если параметр — относительный путь, то он определяется относительно этой открытой директории. Если параметр targetpath — абсолютный путь, то он определяет целевой файл (параметр targetdir игнорируется). Если параметр — относительный путь, то он определяется относительно открытой директории, идентифицируемой параметром targetdir. Во всех случаях, если целевой файл существует, то поведение (замена или ошибка) зависит от реализации.

Параметры:
srcpath - имя файла для перемещения
targetdir - целевая директория
targetpath - имя файла в целевой директории
Исключения:
ClosedDirectoryStreamException - если этот или целевой поток директории закрыты
FileAlreadyExistsException - если файл уже существует в целевой директории и не может быть заменён (необязательное специфическое исключение)
AtomicMoveNotSupportedException - если файл не может быть перемещён как атомарная операция файловой системы
IOException - если произошла ошибка ввода-вывода
SecurityException - В случае использования стандартного поставщика и установленного менеджера безопасности, вызывается метод checkWrite для проверки доступа для записи как к исходному, так и к целевому файлу.

getFileAttributeView

<V extends FileAttributeView> V getFileAttributeView(Class<V> type)

Возвращает новый просмотр атрибутов файла для доступа к атрибутам файла этой директории.

Полученный просмотр атрибутов файла может быть использован для чтения или обновления атрибутов этой (открытой) директории. Параметр type определяет тип просмотра атрибутов, и метод возвращает экземпляр этого типа, если он поддерживается. Вызов этого метода для получения BasicFileAttributeView всегда возвращает экземпляр этого класса, привязанный к этой открытой директории.

Состояние полученного просмотра атрибутов файла тесно связано с потоком директории. После закрытия потока директории closed все методы чтения или обновления атрибутов будут выбрасывать ClosedDirectoryStreamException.

Параметры типа:
V - Тип FileAttributeView
Параметры:
type - объект Class, соответствующий просмотру атрибутов файла
Возвращает:
новый просмотр атрибутов файла указанного типа, связанного с этим потоком директории, или null если тип просмотра атрибутов недоступен

getFileAttributeView

<V extends FileAttributeView> V getFileAttributeView(T path,
                                                     Class<V> type,
                                                     LinkOption... options)

Возвращает новый просмотр атрибутов файла для доступа к атрибутам файла в этой директории.

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

Состояние полученного просмотра атрибутов файла тесно связано с потоком директории. После закрытия потока директории closed все методы чтения или обновления атрибутов будут выбрасывать ClosedDirectoryStreamException. Файл не обязан существовать в момент создания просмотра атрибутов файла, но методы чтения или обновления атрибутов файла завершатся ошибкой, если файл не существует.

Параметры типа:
V - тип FileAttributeView
Параметры:
path - путь к файлу
type - объект Class, соответствующий представлению атрибута файла
options - параметры, указывающие, как обрабатываются символические ссылки
Возвращает:
новое представление атрибутов файла указанного типа, связанное с потоком этого каталога, или null, если тип представления атрибутов недоступен

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/SecureDirectoryStream.html

Spec-Zone .ru
спецификации, руководства, описания, API