Интерфейс 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 |
Удаляет каталог. |
void |
deleteFile |
Удаляет файл. |
<V extends FileAttributeView> |
getFileAttributeView |
Возвращает новое представление атрибутов файла для доступа к атрибутам этого каталога. |
<V extends FileAttributeView> |
getFileAttributeView |
Возвращает новое представление атрибутов файла для доступа к атрибутам файла в этом каталоге. |
void |
move |
Перемещает файл из этого каталога в другой каталог. |
SeekableByteChannel |
newByteChannel |
Открывает или создаёт файл в этом каталоге и возвращает канал с произвольным доступом для работы с файлом. |
SecureDirectoryStream |
newDirectoryStream |
Открывает каталог, указанный заданным путём, и возвращает
SecureDirectoryStream для перебора его элементов. |
Методы, объявленные в интерфейсе 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, если тип представления атрибутов недоступен
© 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