public
class
ParcelFileDescriptor
extends Object
implements
Parcelable,
Closeable
java.lang.Object | |
↳ | android.os.ParcelFileDescriptor |
The FileDescriptor returned by readFileDescriptor()
, allowing
you to close it when done with it.
Nested classes | |
---|---|
class |
ParcelFileDescriptor.AutoCloseInputStream
An InputStream you can create on a ParcelFileDescriptor, which will
take care of calling |
class |
ParcelFileDescriptor.AutoCloseOutputStream
An OutputStream you can create on a ParcelFileDescriptor, which will
take care of calling |
class |
ParcelFileDescriptor.FileDescriptorDetachedException
Exception that indicates that the file descriptor was detached. |
interface |
ParcelFileDescriptor.OnCloseListener
Callback indicating that a ParcelFileDescriptor has been closed. |
Constants | |
---|---|
int |
MODE_APPEND
For use with |
int |
MODE_CREATE
For use with |
int |
MODE_READ_ONLY
For use with |
int |
MODE_READ_WRITE
For use with |
int |
MODE_TRUNCATE
For use with |
int |
MODE_WORLD_READABLE
This constant was deprecated
in API level 19.
Creating world-readable files is very dangerous, and likely
to cause security holes in applications. It is strongly
discouraged; instead, applications should use more formal
mechanism for interactions such as |
int |
MODE_WORLD_WRITEABLE
This constant was deprecated
in API level 19.
Creating world-writable files is very dangerous, and likely
to cause security holes in applications. It is strongly
discouraged; instead, applications should use more formal
mechanism for interactions such as |
int |
MODE_WRITE_ONLY
For use with |
Inherited constants |
---|
From
interface
android.os.Parcelable
|
Fields | |
---|---|
public
static
final
Creator<ParcelFileDescriptor> |
CREATOR
|
Public constructors | |
---|---|
ParcelFileDescriptor(ParcelFileDescriptor wrapped)
Create a new ParcelFileDescriptor wrapped around another descriptor. |
Public methods | |
---|---|
static
ParcelFileDescriptor
|
adoptFd(int fd)
Take ownership of a raw native fd in to a new ParcelFileDescriptor. |
boolean
|
canDetectErrors()
Indicates if this ParcelFileDescriptor can communicate and detect remote errors/crashes. |
void
|
checkError()
Detect and throw if the other end of a pipe or socket pair encountered an error or crashed. |
void
|
close()
Close the ParcelFileDescriptor. |
void
|
closeWithError(String msg)
Close the ParcelFileDescriptor, informing any peer that an error occurred while processing. |
static
ParcelFileDescriptor[]
|
createPipe()
Create two ParcelFileDescriptors structured as a data pipe. |
static
ParcelFileDescriptor[]
|
createReliablePipe()
Create two ParcelFileDescriptors structured as a data pipe. |
static
ParcelFileDescriptor[]
|
createReliableSocketPair()
Create two ParcelFileDescriptors structured as a pair of sockets connected to each other. |
static
ParcelFileDescriptor[]
|
createSocketPair()
Create two ParcelFileDescriptors structured as a pair of sockets connected to each other. |
int
|
describeContents()
Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. |
int
|
detachFd()
Return the native fd int for this ParcelFileDescriptor and detach it from the object here. |
static
ParcelFileDescriptor
|
dup(FileDescriptor orig)
Create a new ParcelFileDescriptor that is a dup of an existing FileDescriptor. |
ParcelFileDescriptor
|
dup()
Create a new ParcelFileDescriptor that is a dup of the existing FileDescriptor. |
static
ParcelFileDescriptor
|
fromDatagramSocket(DatagramSocket datagramSocket)
Create a new ParcelFileDescriptor from the specified DatagramSocket. |
static
ParcelFileDescriptor
|
fromFd(int fd)
Create a new ParcelFileDescriptor from a raw native fd. |
static
ParcelFileDescriptor
|
fromSocket(Socket socket)
Create a new ParcelFileDescriptor from the specified Socket. |
int
|
getFd()
Return the native fd int for this ParcelFileDescriptor. |
FileDescriptor
|
getFileDescriptor()
Retrieve the actual FileDescriptor associated with this object. |
long
|
getStatSize()
Return the total size of the file representing this fd, as determined by
|
static
ParcelFileDescriptor
|
open(File file, int mode)
Create a new ParcelFileDescriptor accessing a given file. |
static
ParcelFileDescriptor
|
open(File file, int mode, Handler handler, ParcelFileDescriptor.OnCloseListener listener)
Create a new ParcelFileDescriptor accessing a given file. |
static
int
|
parseMode(String mode)
Converts a string representing a file mode, such as "rw", into a bitmask suitable for use
with |
String
|
toString()
Returns a string representation of the object. |
void
|
writeToParcel(Parcel out, int flags)
Flatten this object in to a Parcel.
If |
Protected methods | |
---|---|
void
|
finalize()
Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. |
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
For use with open(File, int)
: append to end of file while writing.
Constant Value: 33554432 (0x02000000)
int MODE_CREATE
For use with open(File, int)
: create the file if it doesn't already exist.
Constant Value: 134217728 (0x08000000)
int MODE_READ_ONLY
For use with open(File, int)
: open the file with read-only access.
Constant Value: 268435456 (0x10000000)
int MODE_READ_WRITE
For use with open(File, int)
: open the file with read and write access.
Constant Value: 805306368 (0x30000000)
int MODE_TRUNCATE
For use with open(File, int)
: erase contents of file when opening.
Constant Value: 67108864 (0x04000000)
int MODE_WORLD_READABLE
This constant was deprecated
in API level 19.
Creating world-readable files is very dangerous, and likely
to cause security holes in applications. It is strongly
discouraged; instead, applications should use more formal
mechanism for interactions such as ContentProvider
,
BroadcastReceiver
, and Service
.
There are no guarantees that this access mode will remain on
a file, such as when it goes through a backup and restore.
For use with open(File, int)
: if MODE_CREATE
has been supplied and
this file doesn't already exist, then create the file with permissions
such that any application can read it.
Constant Value: 1 (0x00000001)
int MODE_WORLD_WRITEABLE
This constant was deprecated
in API level 19.
Creating world-writable files is very dangerous, and likely
to cause security holes in applications. It is strongly
discouraged; instead, applications should use more formal
mechanism for interactions such as ContentProvider
,
BroadcastReceiver
, and Service
.
There are no guarantees that this access mode will remain on
a file, such as when it goes through a backup and restore.
For use with open(File, int)
: if MODE_CREATE
has been supplied and
this file doesn't already exist, then create the file with permissions
such that any application can write it.
Constant Value: 2 (0x00000002)
int MODE_WRITE_ONLY
For use with open(File, int)
: open the file with write-only access.
Constant Value: 536870912 (0x20000000)
ParcelFileDescriptor (ParcelFileDescriptor wrapped)
Create a new ParcelFileDescriptor wrapped around another descriptor. By default all method calls are delegated to the wrapped descriptor.
Parameters | |
---|---|
wrapped |
ParcelFileDescriptor
|
ParcelFileDescriptor adoptFd (int fd)
Take ownership of a raw native fd in to a new ParcelFileDescriptor. The returned ParcelFileDescriptor now owns the given fd, and will be responsible for closing it. You must not close the fd yourself.
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 ()
Indicates if this ParcelFileDescriptor can communicate and detect remote errors/crashes.
Returns | |
---|---|
boolean |
See also:
void checkError ()
Detect and throw if the other end of a pipe or socket pair encountered an error or crashed. This allows a reader to distinguish between a valid EOF and an error/crash.
If this ParcelFileDescriptor is unable to detect remote errors, it will return silently.
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) . |
See also:
void close ()
Close the ParcelFileDescriptor. This implementation closes the underlying OS resources allocated to represent this stream.
Throws | |
---|---|
IOException |
If an error occurs attempting to close this ParcelFileDescriptor. |
void closeWithError (String msg)
Close the ParcelFileDescriptor, informing any peer that an error occurred while processing. If the creator of this descriptor is not observing errors, it will close normally.
Parameters | |
---|---|
msg |
String :
describing the error; must not be null.
|
Throws | |
---|---|
IOException |
ParcelFileDescriptor[] createPipe ()
Create two ParcelFileDescriptors structured as a data pipe. The first ParcelFileDescriptor in the returned array is the read side; the second is the write side.
Returns | |
---|---|
ParcelFileDescriptor[] |
Throws | |
---|---|
IOException |
ParcelFileDescriptor[] createReliablePipe ()
Create two ParcelFileDescriptors structured as a data pipe. The first ParcelFileDescriptor in the returned array is the read side; the second is the write side.
The write end has the ability to deliver an error message through
closeWithError(String)
which can be handled by the read end
calling checkError()
, usually after detecting an EOF.
This can also be used to detect remote crashes.
Returns | |
---|---|
ParcelFileDescriptor[] |
Throws | |
---|---|
IOException |
ParcelFileDescriptor[] createReliableSocketPair ()
Create two ParcelFileDescriptors structured as a pair of sockets connected to each other. The two sockets are indistinguishable.
Both ends have the ability to deliver an error message through
closeWithError(String)
which can be detected by the other end
calling checkError()
, usually after detecting an EOF.
This can also be used to detect remote crashes.
Returns | |
---|---|
ParcelFileDescriptor[] |
Throws | |
---|---|
IOException |
ParcelFileDescriptor[] createSocketPair ()
Create two ParcelFileDescriptors structured as a pair of sockets connected to each other. The two sockets are indistinguishable.
Returns | |
---|---|
ParcelFileDescriptor[] |
Throws | |
---|---|
IOException |
int describeContents ()
Describe the kinds of special objects contained in this Parcelable
instance's marshaled representation. For example, if the object will
include a file descriptor in the output of writeToParcel(Parcel, int)
,
the return value of this method must include the
CONTENTS_FILE_DESCRIPTOR
bit.
Returns | |
---|---|
int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. |
int detachFd ()
Return the native fd int for this ParcelFileDescriptor and detach it from the object here. You are now responsible for closing the fd in native code.
You should not detach when the original creator of the descriptor is
expecting a reliable signal through close()
or
closeWithError(String)
.
Returns | |
---|---|
int |
See also:
ParcelFileDescriptor dup (FileDescriptor orig)
Create a new ParcelFileDescriptor that is a dup of an existing FileDescriptor. This obeys standard POSIX semantics, where the new file descriptor shared state such as file position with the original file descriptor.
Parameters | |
---|---|
orig |
FileDescriptor
|
Returns | |
---|---|
ParcelFileDescriptor |
Throws | |
---|---|
IOException |
ParcelFileDescriptor dup ()
Create a new ParcelFileDescriptor that is a dup of the existing FileDescriptor. This obeys standard POSIX semantics, where the new file descriptor shared state such as file position with the original file descriptor.
Returns | |
---|---|
ParcelFileDescriptor |
Throws | |
---|---|
IOException |
ParcelFileDescriptor fromDatagramSocket (DatagramSocket datagramSocket)
Create a new ParcelFileDescriptor from the specified DatagramSocket.
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)
Create a new ParcelFileDescriptor from a raw native fd. The new ParcelFileDescriptor holds a dup of the original fd passed in here, so you must still close that fd as well as the new 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)
Create a new ParcelFileDescriptor from the specified Socket. The new ParcelFileDescriptor holds a dup of the original FileDescriptor in the Socket, so you must still close the Socket as well as the new 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 ()
Return the native fd int for this ParcelFileDescriptor. The ParcelFileDescriptor still owns the fd, and it still must be closed through this API.
Returns | |
---|---|
int |
FileDescriptor getFileDescriptor ()
Retrieve the actual FileDescriptor associated with this object.
Returns | |
---|---|
FileDescriptor |
Returns the FileDescriptor associated with this object. |
long getStatSize ()
Return the total size of the file representing this fd, as determined by
stat()
. Returns -1 if the fd is not a file.
Returns | |
---|---|
long |
ParcelFileDescriptor open (File file, int mode)
Create a new ParcelFileDescriptor accessing a given file.
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. |
See also:
ParcelFileDescriptor open (File file, int mode, Handler handler, ParcelFileDescriptor.OnCloseListener listener)
Create a new ParcelFileDescriptor accessing a given file.
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 |
See also:
int parseMode (String mode)
Converts a string representing a file mode, such as "rw", into a bitmask suitable for use
with 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 ()
Returns a string representation of the object. In general, the
toString
method returns a string that
"textually represents" this object. The result should
be a concise but informative representation that is easy for a
person to read.
It is recommended that all subclasses override this method.
The toString
method for class Object
returns a string consisting of the name of the class of which the
object is an instance, the at-sign character `@
', and
the unsigned hexadecimal representation of the hash code of the
object. In other words, this method returns a string equal to the
value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
void writeToParcel (Parcel out, int flags)
Flatten this object in to a Parcel.
If PARCELABLE_WRITE_RETURN_VALUE
is set in flags,
the file descriptor will be closed after a copy is written to the Parcel.
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 ()
Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.
A subclass overrides the finalize
method to dispose of
system resources or to perform other cleanup.
The general contract of finalize
is that it is invoked
if and when the JavaTM virtual
machine has determined that there is no longer any
means by which this object can be accessed by any thread that has
not yet died, except as a result of an action taken by the
finalization of some other object or class which is ready to be
finalized. The finalize
method may take any action, including
making this object available again to other threads; the usual purpose
of finalize
, however, is to perform cleanup actions before
the object is irrevocably discarded. For example, the finalize method
for an object that represents an input/output connection might perform
explicit I/O transactions to break the connection before the object is
permanently discarded.
The finalize
method of class Object
performs no
special action; it simply returns normally. Subclasses of
Object
may override this definition.
The Java programming language does not guarantee which thread will
invoke the finalize
method for any given object. It is
guaranteed, however, that the thread that invokes finalize will not
be holding any user-visible synchronization locks when finalize is
invoked. If an uncaught exception is thrown by the finalize method,
the exception is ignored and finalization of that object terminates.
After the finalize
method has been invoked for an object, no
further action is taken until the Java virtual machine has again
determined that there is no longer any means by which this object can
be accessed by any thread that has not yet died, including possible
actions by other objects or classes which are ready to be finalized,
at which point the object may be discarded.
The finalize
method is never invoked more than once by a Java
virtual machine for any given object.
Any exception thrown by the finalize
method causes
the finalization of this object to be halted, but is otherwise
ignored.
Throws | |
---|---|
Throwable |