Spec-Zone.ru › OpenJDK 21

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

Параметры типа:
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
Открывает каталог, указанный данным путём, возвращая объект для итерирования по записям в каталоге.

Этот метод работает точно так же, как и метод 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.

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

getFileAttributeView

<V extends FileAttributeView> V getFileAttributeView(T path, Class<V> type, LinkOption... options)
Возвращает новое представление атрибутов файла для доступа к атрибутам файла в этом каталоге.

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

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

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

© 1993, 2023, 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/21/docs/api/java.base/java/nio/file/SecureDirectoryStream.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API