public abstract class DocumentFile
extends Object
java.lang.Object | |
↳ | android.support.v4.provider.DocumentFile |
由DocumentsProvider
或磁盘上的原始文件支持的文档的表示。 这是一个实用程序类,用于模拟传统的File
界面。 它提供了一个文档树的简化视图,但它有大量的开销。 为获得最佳性能和更丰富的功能集,请直接使用DocumentsContract
方法和常量。
文档和传统文件有几点区别:
在使用这个类之前,首先考虑你是否真的需要访问整个文档的子树。 最小权限原则规定您只应请求访问您真正需要的文档。 如果您只需要用户选择一个文件,请使用ACTION_OPEN_DOCUMENT
或ACTION_GET_CONTENT
。 如果您想让用户选择多个文件,请添加EXTRA_ALLOW_MULTIPLE
。 如果您只需要用户保存单个文件,请使用ACTION_CREATE_DOCUMENT
。 如果您使用这些API,则可以将生成的getData()
传递到fromSingleUri(Context, Uri)
以处理该文档。
如果您确实需要完全访问整个文档子树,请启动ACTION_OPEN_DOCUMENT_TREE
以让用户选择一个目录。 然后将生成的getData()
传递到fromTreeUri(Context, Uri)
以开始使用用户选择的树。
在浏览DocumentFile实例的树时,您始终可以使用 getUri()
获取表示该对象的基础文档的Uri,以便与 openInputStream(Uri)
一起使用等等。
为了简化运行 KITKAT
或更早版本的设备上的代码,可以使用模拟 fromFile(File)
的行为的 DocumentsProvider
。
Public methods |
|
---|---|
abstract boolean |
canRead() 指示是否允许从该文件读取当前上下文。 |
abstract boolean |
canWrite() 指示是否允许当前上下文写入此文件。 |
abstract DocumentFile |
createDirectory(String displayName) 创建一个新目录作为此目录的直接子目录。 |
abstract DocumentFile |
createFile(String mimeType, String displayName) 创建一个新文档作为此目录的直接子节点。 |
abstract boolean |
delete() 删除此文件。 |
abstract boolean |
exists() 返回一个指示是否可以找到该文件的布尔值。 |
DocumentFile |
findFile(String displayName) 通过 |
static DocumentFile |
fromFile(File file) 创建一个 |
static DocumentFile |
fromSingleUri(Context context, Uri singleUri) 创建 |
static DocumentFile |
fromTreeUri(Context context, Uri treeUri) 创建一个 |
abstract String |
getName() 返回此文档的显示名称。 |
DocumentFile |
getParentFile() 返回此文档的父文件。 |
abstract String |
getType() 返回此文档的MIME类型。 |
abstract Uri |
getUri() 返回此文件所代表的底层文档的Uri。 |
abstract boolean |
isDirectory() 指示此文件是否代表 目录 。 |
static boolean |
isDocumentUri(Context context, Uri uri) 测试Uri是否由 |
abstract boolean |
isFile() 指示该文件是否代表 文件 。 |
abstract long |
lastModified() 返回上次修改此文件的时间,以毫秒为单位,自1970年1月1日起,午夜。 |
abstract long |
length() 以字节为单位返回此文件的长度。 |
abstract DocumentFile[] |
listFiles() 返回此文件所表示的目录中包含的文件数组。 |
abstract boolean |
renameTo(String displayName) 将该文件重命名为 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
boolean canRead ()
指示是否允许从该文件读取当前上下文。
Returns | |
---|---|
boolean |
true if this file can be read, false otherwise. |
boolean canWrite ()
指示是否允许当前上下文写入此文件。
Returns | |
---|---|
boolean |
true if this file can be written, false otherwise. |
DocumentFile createDirectory (String displayName)
创建一个新目录作为此目录的直接子目录。
Parameters | |
---|---|
displayName |
String : name of new directory |
Returns | |
---|---|
DocumentFile |
file representing newly created directory, or null if failed |
Throws | |
---|---|
UnsupportedOperationException |
when working with a single document created from fromSingleUri(Context, Uri) . |
DocumentFile createFile (String mimeType, String displayName)
创建一个新文档作为此目录的直接子节点。
Parameters | |
---|---|
mimeType |
String : MIME type of new document, such as image/png or audio/flac |
displayName |
String : name of new document, without any file extension appended; the underlying provider may choose to append the extension |
Returns | |
---|---|
DocumentFile |
file representing newly created document, or null if failed |
Throws | |
---|---|
UnsupportedOperationException |
when working with a single document created from fromSingleUri(Context, Uri) . |
boolean delete ()
删除此文件。
注意,此方法不抛出IOException
失败。 呼叫者必须检查返回值。
Returns | |
---|---|
boolean |
true if this file was deleted, false otherwise. |
boolean exists ()
返回一个指示是否可以找到该文件的布尔值。
Returns | |
---|---|
boolean |
true if this file exists, false otherwise. |
DocumentFile findFile (String displayName)
通过listFiles()
搜索匹配给定显示名称的第一个文档。 没有找到匹配的文档时返回null
。
Parameters | |
---|---|
displayName |
String
|
Returns | |
---|---|
DocumentFile |
Throws | |
---|---|
UnsupportedOperationException |
when working with a single document created from fromSingleUri(Context, Uri) . |
DocumentFile fromFile (File file)
创建一个DocumentFile
表示以给定的File
根的文件系统树。 除了你的应用程序已有的基础文件之外,这不会给你任何额外的访问权限。
getUri()
将返回 file://
Uris查看通过此树探索的文件。
Parameters | |
---|---|
file |
File
|
Returns | |
---|---|
DocumentFile |
DocumentFile fromSingleUri (Context context, Uri singleUri)
创建DocumentFile
代表在给定的单一文件Uri
。 这只适用于运行KITKAT
或更高版本的设备,并且在早期平台版本上null
时将返回null
。
Parameters | |
---|---|
context |
Context
|
singleUri |
Uri : the getData() from a successful ACTION_OPEN_DOCUMENT or ACTION_CREATE_DOCUMENT request. |
Returns | |
---|---|
DocumentFile |
DocumentFile fromTreeUri (Context context, Uri treeUri)
创建一个DocumentFile
表示以给定的Uri
根的文档树。 这仅适用于运行LOLLIPOP
或更高版本的设备,并且在早期平台版本上null
时将返回null
。
Parameters | |
---|---|
context |
Context
|
treeUri |
Uri : the getData() from a successful ACTION_OPEN_DOCUMENT_TREE request. |
Returns | |
---|---|
DocumentFile |
DocumentFile getParentFile ()
返回此文档的父文件。 只在用户选择的树内定义; 你永远不能在树顶上逃跑。
底层的 DocumentsProvider
只定义了从父到子的正向映射,所以这里提供的子对父对象的反向映射纯粹是一种方便的方法,如果底层树结构发生变化,它可能不正确。
Returns | |
---|---|
DocumentFile |
Uri getUri ()
返回此文件所代表的底层文档的Uri。 这可以与其他平台API一起使用来操纵或共享底层内容。 您可以使用isDocumentUri(Context, Uri)
来测试返回的Uri是否由DocumentsProvider
支持。
Returns | |
---|---|
Uri |
boolean isDirectory ()
指示此文件是否代表 目录 。
Returns | |
---|---|
boolean |
true if this file is a directory, false otherwise. |
也可以看看:
boolean isDocumentUri (Context context, Uri uri)
测试Uri是否由 DocumentsProvider
支持。
Parameters | |
---|---|
context |
Context
|
uri |
Uri
|
Returns | |
---|---|
boolean |
boolean isFile ()
指示该文件是否代表 文件 。
Returns | |
---|---|
boolean |
true if this file is a file, false otherwise. |
也可以看看:
long lastModified ()
返回上次修改此文件的时间,以毫秒为单位,自1970年1月1日起,午夜。 如果文件不存在,或者修改时间未知,则返回0。
Returns | |
---|---|
long |
the time when this file was last modified. |
也可以看看:
long length ()
以字节为单位返回此文件的长度。 如果文件不存在,或者长度未知,则返回0。 没有定义目录的结果。
Returns | |
---|---|
long |
the number of bytes in this file. |
也可以看看:
DocumentFile[] listFiles ()
返回此文件所表示的目录中包含的文件数组。
Returns | |
---|---|
DocumentFile[] |
an array of files or null . |
Throws | |
---|---|
UnsupportedOperationException |
when working with a single document created from fromSingleUri(Context, Uri) . |
boolean renameTo (String displayName)
将该文件重命名为 displayName
。
注意,此方法不抛出IOException
失败。 呼叫者必须检查返回值。
某些提供程序可能需要创建一个新文档以反映重命名,可能使用不同的MIME类型,因此可能会更改 getUri()
和 getType()
以反映重命名。
重命名目录时,先前通过 listFiles()
枚举的子 listFiles()
可能不再有效。
Parameters | |
---|---|
displayName |
String : the new display name. |
Returns | |
---|---|
boolean |
true on success. |
Throws | |
---|---|
UnsupportedOperationException |
when working with a single document created from fromSingleUri(Context, Uri) . |