Spec-Zone.ru › OpenJDK 25

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

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

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

Начиная с версии:
1.7

Краткое описание вложенных классов

Вложенные классы и интерфейсы, объявленные в интерфейсе 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 для перебора его элементов.

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

close

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

iterator

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, в том числе концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/file/SecureDirectoryStream.html

Spec-Zone.ru

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