Интерфейс SecureDirectoryStream<T>
- Все суперинтерфейсы:
- AutoCloseable, Closeable, DirectoryStream<T>, Iterable<T>
public interface SecureDirectoryStream<T> extends DirectoryStream<T>
A DirectoryStream, определяющий операции над файлами, расположенными относительно открытого каталога. A SecureDirectoryStream предназначен для использования в сложных или требующих повышенной безопасности приложениях, которые требуют обхода древовидной структуры файлов или других операций с каталогами без гонок. Гонки могут возникнуть, когда последовательность операций с файлами не может быть выполнена изолированно. Каждая из операций с файлами, определённых в этом интерфейсе, указывает относительный путь. Все доступ к файлам относительны к открытому каталогу независимо от того, был ли каталог перемещён или заменён злоумышленником во время его открытия. A SecureDirectoryStream также может использоваться как виртуальный рабочий каталог.
A SecureDirectoryStream требует соответствующей поддержки от underlying операционной системы. В тех случаях, когда реализация поддерживает эти функции, то DirectoryStream возвращаемый методом newDirectoryStream будет SecureDirectoryStream и должен быть приведён к этому типу для вызова методов, определённых в этом интерфейсе.
В случае использования по умолчанию provider, и если установлен менеджер безопасности, то проверки разрешений выполняются с использованием пути, полученного путём разрешения данного относительного пути по отношению к исходному пути каталога (независимо от того, был ли каталог перемещён после его открытия).
- С:
- 1.7
Вложенные классы
Вложенные классы/интерфейсы, унаследованные от интерфейса java.nio.file.DirectoryStream
DirectoryStream.Filter<T> Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
deleteDirectory(T path) Удаляет каталог. |
void |
deleteFile(T path) Удаляет файл. |
<V extends FileAttributeView> |
getFileAttributeView(Class<V> type) Возвращает новое представление атрибутов файла для доступа к атрибутам файла этого каталога. |
<V extends FileAttributeView> |
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) Открывает каталог, идентифицируемый данным путём, возвращая |
Методы, унаследованные от интерфейса java.nio.file.DirectoryStream
iterator Методы, унаследованные от интерфейса java.io.Closeable
close Методы, унаследованные от интерфейса 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.
- Тип параметров:
-
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, 2020, 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.