Spec-Zone.ru › OpenJDK 27

Интерфейс 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>
Модификатор и тип Интерфейс Описание
static interface  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
Модификатор и тип Метод Описание
void close()
Закрывает этот поток и освобождает все связанные с ним системные ресурсы.

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

iterator
Модификатор и тип Метод Описание
Iterator<T> iterator()
Возвращает итератор, связанный с этим DirectoryStream.

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

forEach, spliterator
Модификатор и тип Метод Описание
default void forEach(Consumer<? super T> action)
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или пока действие не вызовет исключение.
default Spliterator<T> spliterator()
Создаёт Spliterator для элементов, описанных этим Iterable.

Подробное описание методов

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
Перемещает файл из этого каталога в другой каталог.

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

Параметры:
srcpath — имя перемещаемого файла
targetdir — каталог назначения; может быть null
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, 2026, 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.

Spec-Zone.ru

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