public interface SecureDirectoryStream<T> extends DirectoryStream<T>
DirectoryStream
定义操作是相对开放的目录文件。一个
SecureDirectoryStream
用复杂或安全需要遍历文件目录树或在比赛中自由地敏感的应用。当一个文件操作序列不能在隔离中进行时,会出现竞争条件。由该接口定义的文件操作指定了一个相对路径。所有对该文件的访问是相对于打开的目录,不论如果目录被移动或由攻击者取代,而该目录是打开的。一个
SecureDirectoryStream
也可能被用来作为一个虚拟的工作目录。
一个SecureDirectoryStream
需要从底层操作系统相应的支持。在一个实施支持这一特点然后DirectoryStream
由newDirectoryStream
方法返回的将是一个SecureDirectoryStream
必须投式为了调用这个接口定义的方法。
在默认的情况下,provider
,安全管理器设置,然后使用权限检查解决给定的相对路径对目录的路径进行了原来的路(不论如果目录启用以来,感动)。
DirectoryStream.Filter<T>
Modifier and Type | Method and Description |
---|---|
void |
deleteDirectory(T path)
删除目录。
|
void |
deleteFile(T path)
删除一个文件。
|
<V extends FileAttributeView> |
getFileAttributeView(类<V> type)
返回一个新的文件属性视图来访问该目录的文件属性。
|
<V extends FileAttributeView> |
getFileAttributeView(T path, 类<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 遍历目录中的条目。
|
iterator
forEach, spliterator
SecureDirectoryStream<T> newDirectoryStream(T path, LinkOption... options) throws IOException
SecureDirectoryStream
遍历目录中的条目。
这种方法完全地,path
参数是一个absolute
路径的情况下newDirectoryStream
方法指定的工作。当参数是一个相对路径,然后打开的目录是相对于这个开放目录。的NOFOLLOW_LINKS
选项可以用来确保如果文件是一个符号链接,这个方法失败。
新的目录流,一旦创建,不依赖于用于创建它的目录流。关闭此目录流对新创建的目录流没有影响。
path
-路径的目录打开
options
选项指示如何处理符号链接
SecureDirectoryStream
对象
ClosedDirectoryStreamException
-如果目录流关闭
NotDirectoryException
-如果文件不能打开,因为它不是一个目录(可选特定异常)
IOException
如果I/O错误发生
SecurityException
在默认提供程序的情况下,和安全管理器的安装,
checkRead
方法被调用,检查访问的目录读取。
SeekableByteChannel newByteChannel(T path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException
这种方法完全地,path
参数是一个absolute
路径的情况下Files.newByteChannel
方法指定的工作。当参数是一个相对路径,然后打开或创建文件是相对于这个开放目录。除了由Files.newByteChannel
方法定义的选项,这NOFOLLOW_LINKS
选项可以用来确保如果文件是一个符号链接,这个方法失败。
该通道,一旦创建,不依赖于用于创建它的目录流。关闭此目录流对信道没有影响。
path
-该文件打开打开或创建路径
options
选项指定如何打开文件
attrs
-可选属性设置自动创建文件时
ClosedDirectoryStreamException
-如果目录流关闭
IllegalArgumentException
如果集包含一个无效的组合选择
UnsupportedOperationException
-如果不支持打开选项指定或数组包含不能设置自动创建文件时的属性
FileAlreadyExistsException
-如果这个名字已经存在,
CREATE_NEW
选项指定的文件(可选特定异常)
IOException
如果I/O错误发生
SecurityException
在默认提供程序的情况下,和安全管理器的安装,
checkRead
方法被调用来检查文件是否被打开阅读读访问路径。的
checkWrite
方法被调用来检查写访问路径,如果文件打开写作。
void deleteFile(T path) throws IOException
不像delete()
方法,此方法不先检查文件,确定文件是一个目录。是否通过这种方法删除目录是系统依赖的,因此没有指定。如果该文件是一个符号链接,则链接本身,而不是链接的最终目标,被删除。当参数是一个相对路径,然后文件删除是相对于这个开放目录。
path
-路径的文件删除
ClosedDirectoryStreamException
-如果目录流关闭
NoSuchFileException
(可选特定异常)
IOException
如果I/O错误发生
SecurityException
在默认提供程序的情况下,和安全管理器的安装,
checkDelete
方法被调用来检查删除文件
void deleteDirectory(T path) throws IOException
不像delete()
方法,此方法不先检查文件,确定文件是一个目录。是否通过这种方法删除非目录是系统依赖的,因此没有指定。当参数是一个相对路径,然后删除目录是相对于这个开放目录。
path
-目录的路径删除
ClosedDirectoryStreamException
-如果目录流关闭
NoSuchFileException
如果目录不存在(可选特定异常)
DirectoryNotEmptyException
-如果目录不能被删除,因为它不是空的(可选特定异常)
IOException
如果I/O错误发生
SecurityException
在默认提供程序的情况下,和安全管理器的安装,
checkDelete
方法被调用来检查删除访问目录
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
如果I/O错误发生
SecurityException
在默认提供程序的情况下,和安全管理器的安装,
checkWrite
方法被调用来检查写访问的源和目标文件。
<V extends FileAttributeView> V getFileAttributeView(类<V> type)
由此产生的文件属性视图可以用来读取或更新这个(打开)目录的属性。的type
参数指定的属性视图的类型和方法返回该类型的实例是否支持。调用此方法获得BasicFileAttributeView
总是返回该类的,必然是开放目录实例。
将产生的文件属性视图的状态与此目录流密切相关。一旦目录流closed
,那么所有的方法来读取或更新属性将ClosedDirectoryStreamException
。
V
-
FileAttributeView
型
type
-对应的文件属性查看
类
对象
null
如果属性视图类型不可用
<V extends FileAttributeView> V getFileAttributeView(T path, 类<V> type, LinkOption... options)
由此产生的文件属性视图可以用来读取或更新这个目录中的文件的属性。的type
参数指定的属性视图的类型和方法返回该类型的实例是否支持。调用此方法获得BasicFileAttributeView
总是返回该类的,绑定到目录中的文件的一个实例。
将产生的文件属性视图的状态与此目录流密切相关。一旦目录流closed
,那么所有的方法来读取或更新属性将ClosedDirectoryStreamException
。该文件不需要存在于创建文件属性视图的时间,但读取或更新该文件的属性的方法将在调用时失败,而该文件不存在。
V
-
FileAttributeView
型
path
-文件的路径
type
-对应的文件属性查看
类
对象
options
选项指示如何处理符号链接
null
如果属性视图类型不可用
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.