Интерфейс 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 |
Удаляет каталог. |
void |
deleteFile |
Удаляет файл. |
<V extends FileAttributeView> |
getFileAttributeView |
Возвращает новое представление атрибутов файла для доступа к атрибутам этого каталога. |
<V extends FileAttributeView> |
getFileAttributeView |
Возвращает новое представление атрибутов файла для доступа к атрибутам файла в этом каталоге. |
void |
move |
Перемещает файл из этого каталога в другой каталог. |
SeekableByteChannel |
newByteChannel |
Открывает или создаёт файл в этом каталоге и возвращает позиционируемый байтовый канал для доступа к файлу. |
SecureDirectoryStream |
newDirectoryStream |
Открывает каталог, указанный заданным путём, и возвращает
SecureDirectoryStream для перебора записей каталога. |
Методы, объявленные в интерфейсе Closeable
close | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает этот поток и освобождает все связанные с ним системные ресурсы. |
Методы, объявленные в интерфейсе DirectoryStream
iterator | Модификатор и тип | Метод | Описание |
|---|---|---|
Iterator |
iterator() |
Возвращает итератор, связанный с этим DirectoryStream. |
Методы, объявленные в интерфейсе Iterable
forEach, spliterator | Модификатор и тип | Метод | Описание |
|---|---|---|
default void |
forEach |
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или пока действие не вызовет исключение. |
default Spliterator |
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, если данный тип представления атрибутов недоступен
© 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.