Spec-Zone.ru › OpenJDK 17

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

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

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

Type Parameters:
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, 2021, 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/17/docs/api/java.base/java/nio/file/SecureDirectoryStream.html

Spec-Zone.ru

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