public class ParcelFileDescriptor
extends Object
implements Parcelable, Closeable
java.lang.Object | |
↳ | android.os.ParcelFileDescriptor |
FileDescriptor由 readFileDescriptor()
返回,允许您在完成时关闭它。
Nested classes |
|
---|---|
class |
ParcelFileDescriptor.AutoCloseInputStream 您可以在ParcelFileDescriptor上创建一个InputStream,它将负责在流关闭时为您调用 |
class |
ParcelFileDescriptor.AutoCloseOutputStream 您可以在ParcelFileDescriptor上创建一个OutputStream,该流将关闭时为您调用 |
class |
ParcelFileDescriptor.FileDescriptorDetachedException 指示文件描述符已分离的异常。 |
interface |
ParcelFileDescriptor.OnCloseListener 回调,指示ParcelFileDescriptor已关闭。 |
Constants |
|
---|---|
int |
MODE_APPEND 与 |
int |
MODE_CREATE 与 |
int |
MODE_READ_ONLY 用于 |
int |
MODE_READ_WRITE 与 |
int |
MODE_TRUNCATE 与 |
int |
MODE_WORLD_READABLE 此常数在API级别19中已弃用。创建世界可读文件是非常危险的,并可能导致应用程序出现安全漏洞。 强烈不鼓励; 相反,应用程序应该使用的相互作用,如更正式的机制 |
int |
MODE_WORLD_WRITEABLE 此常数在API级别19中已弃用。创建可写入世界的文件非常危险,并可能导致应用程序出现安全漏洞。 强烈不鼓励; 相反,应用程序应该使用的相互作用,如更正式的机制 |
int |
MODE_WRITE_ONLY 用于 |
Inherited constants |
---|
From interface android.os.Parcelable
|
Fields |
|
---|---|
public static final Creator<ParcelFileDescriptor> |
CREATOR |
Public constructors |
|
---|---|
ParcelFileDescriptor(ParcelFileDescriptor wrapped) 创建一个包裹另一个描述符的新ParcelFileDescriptor。 |
Public methods |
|
---|---|
static ParcelFileDescriptor |
adoptFd(int fd) 将原始原生fd的所有权转移到新的ParcelFileDescriptor中。 |
boolean |
canDetectErrors() 指示此ParcelFileDescriptor是否可以通信并检测远程错误/崩溃。 |
void |
checkError() 如果管道或套接字对的另一端遇到错误或崩溃,则检测并抛出。 |
void |
close() 关闭ParcelFileDescriptor。 |
void |
closeWithError(String msg) 关闭ParcelFileDescriptor,通知任何同位体处理时发生错误。 |
static ParcelFileDescriptor[] |
createPipe() 创建两个结构化为数据管道的ParcelFileDescriptor。 |
static ParcelFileDescriptor[] |
createReliablePipe() 创建两个结构化为数据管道的ParcelFileDescriptor。 |
static ParcelFileDescriptor[] |
createReliableSocketPair() 创建两个ParcelFileDescriptors,构造为一对相互连接的套接字。 |
static ParcelFileDescriptor[] |
createSocketPair() 创建两个ParcelFileDescriptors,构造为一对相互连接的套接字。 |
int |
describeContents() 描述此Parcelable实例的封送表示中包含的特殊对象的种类。 |
int |
detachFd() 返回此ParcelFileDescriptor的本地fd int并将其从此对象中分离。 |
static ParcelFileDescriptor |
dup(FileDescriptor orig) 创建一个新的ParcelFileDescriptor,它是现有FileDescriptor的一个副本。 |
ParcelFileDescriptor |
dup() 创建一个新的ParcelFileDescriptor,它是现有FileDescriptor的一个副本。 |
static ParcelFileDescriptor |
fromDatagramSocket(DatagramSocket datagramSocket) 从指定的DatagramSocket创建一个新的ParcelFileDescriptor。 |
static ParcelFileDescriptor |
fromFd(int fd) 从原始原生fd创建一个新的ParcelFileDescriptor。 |
static ParcelFileDescriptor |
fromSocket(Socket socket) 从指定的套接字创建一个新的ParcelFileDescriptor。 |
int |
getFd() 为此ParcelFileDescriptor返回本地fd int。 |
FileDescriptor |
getFileDescriptor() 检索与此对象关联的实际FileDescriptor。 |
long |
getStatSize() 返回代表该fd的文件的总大小,由 |
static ParcelFileDescriptor |
open(File file, int mode) 创建一个访问给定文件的新ParcelFileDescriptor。 |
static ParcelFileDescriptor |
open(File file, int mode, Handler handler, ParcelFileDescriptor.OnCloseListener listener) 创建一个访问给定文件的新ParcelFileDescriptor。 |
static int |
parseMode(String mode) 将表示文件模式(如“rw”)的字符串转换为适合与 |
String |
toString() 返回对象的字符串表示形式。 |
void |
writeToParcel(Parcel out, int flags) 将此对象平铺到一个包裹中。 如果在标志中设置了 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.os.Parcelable
|
|
From interface java.io.Closeable
|
|
From interface java.lang.AutoCloseable
|
int MODE_APPEND
与 open(File, int)
使用:写入时附加到文件结尾。
常量值:33554432(0x02000000)
int MODE_CREATE
与 open(File, int)
使用:如果该文件尚不存在,请创建该文件。
常量值:134217728(0x08000000)
int MODE_READ_ONLY
与 open(File, int)
使用:以只读访问权限打开文件。
常量值:268435456(0x10000000)
int MODE_READ_WRITE
与 open(File, int)
使用:以读写权限打开文件。
常量值:805306368(0x30000000)
int MODE_TRUNCATE
用于 open(File, int)
:打开时擦除文件的内容。
常量值:67108864(0x04000000)
int MODE_WORLD_READABLE
此常数在API级别19中已弃用。
创建世界可读的文件是非常危险的,并且很可能会在应用程序中造成安全漏洞。 强烈不鼓励; 相反,应用程序应该使用的相互作用,如更正式的机制ContentProvider
, BroadcastReceiver
,并Service
。 无法保证此访问模式将保留在文件中,例如当它经历备份和恢复时。
与 open(File, int)
使用:如果已提供 MODE_CREATE
且此文件尚不存在,请使用权限创建该文件,以便任何应用程序都可以读取该文件。
常数值:1(0x00000001)
int MODE_WORLD_WRITEABLE
此常数在API级别19中已弃用。
创建世界可写文件是非常危险的,并且很可能会在应用程序中造成安全漏洞。 强烈不鼓励; 相反,应用程序应该使用的相互作用,如更正式的机制ContentProvider
, BroadcastReceiver
,并Service
。 无法保证此访问模式将保留在文件中,例如当它经历备份和恢复时。
与 open(File, int)
使用:如果 MODE_CREATE
已提供且该文件尚不存在,则创建具有权限的文件,以便任何应用程序都可以写入该文件。
常量值:2(0x00000002)
int MODE_WRITE_ONLY
用于 open(File, int)
:以只写访问权限打开文件。
常量值:536870912(0x20000000)
ParcelFileDescriptor (ParcelFileDescriptor wrapped)
创建一个包裹另一个描述符的新ParcelFileDescriptor。 默认情况下,所有的方法调用都被委托给包装描述符。
Parameters | |
---|---|
wrapped |
ParcelFileDescriptor
|
ParcelFileDescriptor adoptFd (int fd)
将原始原生fd的所有权转移到新的ParcelFileDescriptor中。 返回的ParcelFileDescriptor现在拥有给定的fd,并将负责关闭它。 你不能自己关闭fd。
Parameters | |
---|---|
fd |
int : The native fd that the ParcelFileDescriptor should adopt. |
Returns | |
---|---|
ParcelFileDescriptor |
Returns a new ParcelFileDescriptor holding a FileDescriptor for the given fd. |
boolean canDetectErrors ()
指示此ParcelFileDescriptor是否可以通信并检测远程错误/崩溃。
Returns | |
---|---|
boolean |
也可以看看:
void checkError ()
如果管道或套接字对的另一端遇到错误或崩溃,则检测并抛出。 这允许读者区分有效的EOF和错误/崩溃。
如果ParcelFileDescriptor无法检测到远程错误,它将静默地返回。
Throws | |
---|---|
IOException |
for normal errors. |
ParcelFileDescriptor.FileDescriptorDetachedException |
if the remote side called detachFd() . Once detached, the remote side is unable to communicate any errors through closeWithError(String) . |
也可以看看:
void close ()
关闭ParcelFileDescriptor。 此实现关闭分配的代表此流的底层操作系统资源。
Throws | |
---|---|
IOException |
If an error occurs attempting to close this ParcelFileDescriptor. |
void closeWithError (String msg)
关闭ParcelFileDescriptor,通知任何同位体处理时发生错误。 如果此描述符的创建者没有观察到错误,它将正常关闭。
Parameters | |
---|---|
msg |
String : describing the error; must not be null. |
Throws | |
---|---|
IOException |
ParcelFileDescriptor[] createPipe ()
创建两个结构化为数据管道的ParcelFileDescriptor。 返回数组中的第一个ParcelFileDescriptor是读取端; 第二个是写入端。
Returns | |
---|---|
ParcelFileDescriptor[] |
Throws | |
---|---|
IOException |
ParcelFileDescriptor[] createReliablePipe ()
创建两个结构化为数据管道的ParcelFileDescriptor。 返回数组中的第一个ParcelFileDescriptor是读取端; 第二个是写入端。
通常在检测到EOF后,写端可以通过closeWithError(String)
传递错误消息,这可以由读取端调用checkError()
来处理。 这也可以用来检测远程崩溃。
Returns | |
---|---|
ParcelFileDescriptor[] |
Throws | |
---|---|
IOException |
ParcelFileDescriptor[] createReliableSocketPair ()
创建两个ParcelFileDescriptors,构造为一对相互连接的套接字。 这两个插座是无法区分的。
两端都能够通过closeWithError(String)
发送错误消息,通常在检测到EOF后,可以由另一端检测到checkError()
。 这也可以用来检测远程崩溃。
Returns | |
---|---|
ParcelFileDescriptor[] |
Throws | |
---|---|
IOException |
ParcelFileDescriptor[] createSocketPair ()
创建两个ParcelFileDescriptors,构造为一对相互连接的套接字。 这两个插座是无法区分的。
Returns | |
---|---|
ParcelFileDescriptor[] |
Throws | |
---|---|
IOException |
int describeContents ()
描述此Parcelable实例的封送表示中包含的特殊对象的种类。 例如,如果对象将在writeToParcel(Parcel, int)
的输出中包含writeToParcel(Parcel, int)
,则此方法的返回值必须包含CONTENTS_FILE_DESCRIPTOR
位。
Returns | |
---|---|
int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. |
int detachFd ()
返回此ParcelFileDescriptor的本地fd int并将其从此对象中分离。 您现在负责在本机代码中关闭fd。
当描述符的原始创建者期望通过 close()
或 closeWithError(String)
获得可靠信号时,您不应该分离。
Returns | |
---|---|
int |
也可以看看:
ParcelFileDescriptor dup (FileDescriptor orig)
创建一个新的ParcelFileDescriptor,它是现有FileDescriptor的一个副本。 这遵循标准POSIX语义,其中新文件描述符与原始文件描述符共享状态,例如文件位置。
Parameters | |
---|---|
orig |
FileDescriptor
|
Returns | |
---|---|
ParcelFileDescriptor |
Throws | |
---|---|
IOException |
ParcelFileDescriptor dup ()
创建一个新的ParcelFileDescriptor,它是现有FileDescriptor的一个副本。 这遵循标准POSIX语义,其中新文件描述符与原始文件描述符共享状态,例如文件位置。
Returns | |
---|---|
ParcelFileDescriptor |
Throws | |
---|---|
IOException |
ParcelFileDescriptor fromDatagramSocket (DatagramSocket datagramSocket)
从指定的DatagramSocket创建一个新的ParcelFileDescriptor。
Parameters | |
---|---|
datagramSocket |
DatagramSocket : The DatagramSocket whose FileDescriptor is used to create a new ParcelFileDescriptor. |
Returns | |
---|---|
ParcelFileDescriptor |
A new ParcelFileDescriptor with the FileDescriptor of the specified DatagramSocket. |
ParcelFileDescriptor fromFd (int fd)
从原始原生fd创建一个新的ParcelFileDescriptor。 新的ParcelFileDescriptor包含原始fd的dup,因此您仍然必须关闭该fd以及新的ParcelFileDescriptor。
Parameters | |
---|---|
fd |
int : The native fd that the ParcelFileDescriptor should dup. |
Returns | |
---|---|
ParcelFileDescriptor |
Returns a new ParcelFileDescriptor holding a FileDescriptor for a dup of the given fd. |
Throws | |
---|---|
IOException |
ParcelFileDescriptor fromSocket (Socket socket)
从指定的套接字创建一个新的ParcelFileDescriptor。 新的ParcelFileDescriptor在Socket中保留了原始FileDescriptor的dup,所以您仍然必须关闭套接字以及新的ParcelFileDescriptor。
Parameters | |
---|---|
socket |
Socket : The Socket whose FileDescriptor is used to create a new ParcelFileDescriptor. |
Returns | |
---|---|
ParcelFileDescriptor |
A new ParcelFileDescriptor with the FileDescriptor of the specified Socket. |
int getFd ()
为此ParcelFileDescriptor返回本地fd int。 ParcelFileDescriptor仍然拥有fd,它仍然必须通过这个API关闭。
Returns | |
---|---|
int |
FileDescriptor getFileDescriptor ()
检索与此对象关联的实际FileDescriptor。
Returns | |
---|---|
FileDescriptor |
Returns the FileDescriptor associated with this object. |
long getStatSize ()
返回代表该fd的文件的总大小,由stat()
决定。 如果fd不是文件,则返回-1。
Returns | |
---|---|
long |
ParcelFileDescriptor open (File file, int mode)
创建一个访问给定文件的新ParcelFileDescriptor。
Parameters | |
---|---|
file |
File : The file to be opened. |
mode |
int : The desired access mode, must be one of MODE_READ_ONLY , MODE_WRITE_ONLY , or MODE_READ_WRITE ; may also be any combination of MODE_CREATE , MODE_TRUNCATE , MODE_WORLD_READABLE , and MODE_WORLD_WRITEABLE . |
Returns | |
---|---|
ParcelFileDescriptor |
a new ParcelFileDescriptor pointing to the given file. |
Throws | |
---|---|
FileNotFoundException |
if the given file does not exist or can not be opened with the requested mode. |
也可以看看:
ParcelFileDescriptor open (File file, int mode, Handler handler, ParcelFileDescriptor.OnCloseListener listener)
创建一个访问给定文件的新ParcelFileDescriptor。
Parameters | |
---|---|
file |
File : The file to be opened. |
mode |
int : The desired access mode, must be one of MODE_READ_ONLY , MODE_WRITE_ONLY , or MODE_READ_WRITE ; may also be any combination of MODE_CREATE , MODE_TRUNCATE , MODE_WORLD_READABLE , and MODE_WORLD_WRITEABLE . |
handler |
Handler : to call listener from; must not be null. |
listener |
ParcelFileDescriptor.OnCloseListener : to be invoked when the returned descriptor has been closed; must not be null. |
Returns | |
---|---|
ParcelFileDescriptor |
a new ParcelFileDescriptor pointing to the given file. |
Throws | |
---|---|
FileNotFoundException |
if the given file does not exist or can not be opened with the requested mode. |
IOException |
也可以看看:
int parseMode (String mode)
将代表文件模式(如“rw”)的字符串转换为适合与 open(File, int)
一起使用的位掩码。
Parameters | |
---|---|
mode |
String : The string representation of the file mode. |
Returns | |
---|---|
int |
A bitmask representing the given file mode. |
Throws | |
---|---|
IllegalArgumentException |
if the given string does not match a known file mode. |
String toString ()
返回对象的字符串表示形式。 通常, toString
方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
void writeToParcel (Parcel out, int flags)
将此对象平铺到一个包裹中。 如果将PARCELABLE_WRITE_RETURN_VALUE
设置为标志,则将副本写入宗地后文件描述符将被关闭。
Parameters | |
---|---|
out |
Parcel : The Parcel in which the object should be written. |
flags |
int : Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE . |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法以处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize
方法可以采取任何操作,包括使该对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类Object
的finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对对象调用 finalize
方法之后,在Java虚拟机再次确定不再有任何途径可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定对象,Java虚拟机永远不会多次调用 finalize
方法。
finalize
方法引发的任何异常 finalize
导致此对象的终止被暂停,但会被忽略。
Throws | |
---|---|
Throwable |