Spec-Zone.ru › OpenJDK 24

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

Параметры типа:
T - Тип элемента, возвращаемого итератором
Все суперинтерфейсы:
AutoCloseable, Closeable, DirectoryStream<T>, Iterable<T>
public interface SecureDirectoryStream<T> extends DirectoryStream<T>
Интерфейс, определяющий операции над файлами, расположенными относительно открытого каталога. Интерфейс предназначен для использования в сложных или чувствительных к безопасности приложениях, которым требуется переходить по древовидной структуре файлов или иным образом работать с каталогами без гонок. Гонки могут возникать, когда последовательность операций с файлами не может быть выполнена изолированно. Каждая из операций с файлами, определённых этим интерфейсом, задаёт относительный путь. Весь доступ к файлу относительный к открытому каталогу, независимо от того, перемещён или заменён ли каталог злоумышленником во время его открытия. Интерфейс также может использоваться как виртуальный рабочий каталог.

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

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

Методы, объявленные в интерфейсе 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 - если произошла ошибка ввода-вывода

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 - если произошла ошибка ввода-вывода

deleteFile

void deleteFile(T path) throws IOException
Удаляет файл.

В отличие от метода delete(), этот метод не проверяет файл на то, является ли он каталогом. Удаление каталога этим методом зависит от системы и поэтому не определено. Если файл является символической ссылкой, то удаляется сама ссылка, а не конечная цель ссылки. Если параметр является относительным путем, то файл, подлежащий удалению, относится к этому открытому каталогу.

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

deleteDirectory

void deleteDirectory(T path) throws IOException
Удаляет каталог.

В отличие от метода delete(), этот метод не проверяет файл на то, является ли он каталогом. Удаление не-каталогов этим методом зависит от системы и поэтому не определено. Если параметр является относительным путем, то каталог, подлежащий удалению, относится к этому открытому каталогу.

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

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 - если произошла ошибка ввода-вывода

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. Файл не обязательно должен существовать в момент создания представления атрибутов, но методы чтения или обновления атрибутов файла будут завершаться ошибкой, если файла не существует.

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

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/file/SecureDirectoryStream.html

Spec-Zone.ru

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