Most visited

Recently visited

Added in API level 1

ParcelFileDescriptor

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.

Summary

Nested classes

class ParcelFileDescriptor.AutoCloseInputStream

An InputStream you can create on a ParcelFileDescriptor, which will take care of calling ParcelFileDescriptor.close() for you when the stream is closed. 

class ParcelFileDescriptor.AutoCloseOutputStream

An OutputStream you can create on a ParcelFileDescriptor, which will take care of calling ParcelFileDescriptor.close() for you when the stream is closed. 

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 open(File, int): append to end of file while writing.

int MODE_CREATE

For use with open(File, int): create the file if it doesn't already exist.

int MODE_READ_ONLY

For use with open(File, int): open the file with read-only access.

int MODE_READ_WRITE

For use with open(File, int): open the file with read and write access.

int MODE_TRUNCATE

For use with open(File, int): erase contents of file when opening.

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.

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.

int MODE_WRITE_ONLY

For use with open(File, int): open the file with write-only access.

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 stat().

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 open(File, int).

String toString()

Returns 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.

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

Constants

MODE_APPEND

Added in API level 3
int MODE_APPEND

For use with open(File, int): append to end of file while writing.

Constant Value: 33554432 (0x02000000)

MODE_CREATE

Added in API level 1
int MODE_CREATE

For use with open(File, int): create the file if it doesn't already exist.

Constant Value: 134217728 (0x08000000)

MODE_READ_ONLY

Added in API level 1
int MODE_READ_ONLY

For use with open(File, int): open the file with read-only access.

Constant Value: 268435456 (0x10000000)

MODE_READ_WRITE

Added in API level 1
int MODE_READ_WRITE

For use with open(File, int): open the file with read and write access.

Constant Value: 805306368 (0x30000000)

MODE_TRUNCATE

Added in API level 1
int MODE_TRUNCATE

For use with open(File, int): erase contents of file when opening.

Constant Value: 67108864 (0x04000000)

MODE_WORLD_READABLE

Added in API level 1
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)

MODE_WORLD_WRITEABLE

Added in API level 1
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)

MODE_WRITE_ONLY

Added in API level 1
int MODE_WRITE_ONLY

For use with open(File, int): open the file with write-only access.

Constant Value: 536870912 (0x20000000)

Fields

CREATOR

Added in API level 1
Creator<ParcelFileDescriptor> CREATOR

Public constructors

ParcelFileDescriptor

Added in API level 1
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

Public methods

adoptFd

Added in API level 13
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.

canDetectErrors

Added in API level 19
boolean canDetectErrors ()

Indicates if this ParcelFileDescriptor can communicate and detect remote errors/crashes.

Returns
boolean

See also:

checkError

Added in API level 19
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:

close

Added in API level 1
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.

closeWithError

Added in API level 19
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

createPipe

Added in API level 9
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

createReliablePipe

Added in API level 19
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

createReliableSocketPair

Added in API level 19
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

createSocketPair

Added in API level 19
ParcelFileDescriptor[] createSocketPair ()

Create two ParcelFileDescriptors structured as a pair of sockets connected to each other. The two sockets are indistinguishable.

Returns
ParcelFileDescriptor[]
Throws
IOException

describeContents

Added in API level 1
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.

detachFd

Added in API level 12
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:

dup

Added in API level 13
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

dup

Added in API level 14
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

fromDatagramSocket

Added in API level 14
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.

fromFd

Added in API level 13
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

fromSocket

Added in API level 1
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.

getFd

Added in API level 12
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

getFileDescriptor

Added in API level 1
FileDescriptor getFileDescriptor ()

Retrieve the actual FileDescriptor associated with this object.

Returns
FileDescriptor Returns the FileDescriptor associated with this object.

getStatSize

Added in API level 3
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

open

Added in API level 1
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:

open

Added in API level 19
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:

parseMode

Added in API level 19
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.

toString

Added in API level 1
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.

writeToParcel

Added in API level 1
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.

Protected methods

finalize

Added in API level 1
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

Hooray!