com.parse

## Class ParseFile

- java.lang.Object
- - com.parse.ParseFile

    public class ParseFile
    extends Object

`ParseFile` is a local representation of a file that is saved to the Parse cloud.

The workflow is to construct a `ParseFile` with data and optionally a filename. Then save it and set it as a field on a `ParseObject`.

Example:

     ParseFile file = new ParseFile("hello".getBytes());
     file.save();

     ParseObject object = new ParseObject("TestObject");
     object.put("file", file);
     object.save();

### Constructor Summary

Constructors
Constructor and Description
`ParseFile(byte[] data)` Creates a new file from a byte array.
`ParseFile(byte[] data, String contentType)` Creates a new file from a byte array, and content type.
`ParseFile(File file)` Creates a new file from a file pointer.
`ParseFile(File file, String contentType)` Creates a new file from a file pointer, and content type.
`ParseFile(String name, byte[] data)` Creates a new file from a byte array and a name.
`ParseFile(String name, byte[] data, String contentType)` Creates a new file from a byte array, file name, and content type.

### Method Summary

Methods
`void` `cancel()` Cancels the current network request and callbacks whether it's uploading or fetching data from the server.
`byte[]` `getData()` Synchronously gets the data from cache if available or fetches its content from the network.
`Task<byte[]>` `getDataInBackground()` Asynchronously gets the data from cache if available or fetches its content from the network.
`void` `getDataInBackground(GetDataCallback dataCallback)` Asynchronously gets the data from cache if available or fetches its content from the network.
`void` `getDataInBackground(GetDataCallback dataCallback, ProgressCallback progressCallback)` Asynchronously gets the data from cache if available or fetches its content from the network.
`Task<byte[]>` `getDataInBackground(ProgressCallback progressCallback)` Asynchronously gets the data from cache if available or fetches its content from the network.
`InputStream` `getDataStream()` Synchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file.
`Task<InputStream>` `getDataStreamInBackground()` Asynchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file.
`void` `getDataStreamInBackground(GetDataStreamCallback dataStreamCallback)` Asynchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file.
`void` `getDataStreamInBackground(GetDataStreamCallback dataStreamCallback, ProgressCallback progressCallback)` Asynchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file.
`Task<InputStream>` `getDataStreamInBackground(ProgressCallback progressCallback)` Asynchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file.
`File` `getFile()` Synchronously gets the file pointer from cache if available or fetches its content from the network.
`Task<File>` `getFileInBackground()` Asynchronously gets the file pointer from cache if available or fetches its content from the network.
`void` `getFileInBackground(GetFileCallback fileCallback)` Asynchronously gets the file pointer from cache if available or fetches its content from the network.
`void` `getFileInBackground(GetFileCallback fileCallback, ProgressCallback progressCallback)` Asynchronously gets the file pointer from cache if available or fetches its content from the network.
`Task<File>` `getFileInBackground(ProgressCallback progressCallback)` Asynchronously gets the file pointer from cache if available or fetches its content from the network.
`String` `getName()` The filename.
`String` `getUrl()` This returns the url of the file.
`boolean` `isDataAvailable()` Whether the file has available data.
`boolean` `isDirty()` Whether the file still needs to be saved.
`void` `save()` Saves the file to the Parse cloud synchronously.
`Task<Void>` `saveInBackground()` Saves the file to the Parse cloud in a background thread.
`Task<Void>` `saveInBackground(ProgressCallback uploadProgressCallback)` Saves the file to the Parse cloud in a background thread.
`void` `saveInBackground(SaveCallback callback)` Saves the file to the Parse cloud in a background thread.
`void` `saveInBackground(SaveCallback saveCallback, ProgressCallback progressCallback)` Saves the file to the Parse cloud in a background thread.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ParseFile

    public ParseFile(File file)

Creates a new file from a file pointer.

Parameters:
  `file` - The file.

#### ParseFile

    public ParseFile(File file,
             String contentType)

Creates a new file from a file pointer, and content type. Content type will be used instead of auto-detection by file extension.

Parameters:
  `file` - The file.
  `contentType` - The file's content type.

#### ParseFile

    public ParseFile(String name,
             byte[] data,
             String contentType)

Creates a new file from a byte array, file name, and content type. Content type will be used instead of auto-detection by file extension.

Parameters:
  `name` - The file's name, ideally with extension. The file name must begin with an alphanumeric character, and consist of alphanumeric characters, periods, spaces, underscores, or dashes.
  `data` - The file's data.
  `contentType` - The file's content type.

#### ParseFile

    public ParseFile(byte[] data)

Creates a new file from a byte array.

Parameters:
  `data` - The file's data.

#### ParseFile

    public ParseFile(String name,
             byte[] data)

Creates a new file from a byte array and a name. Giving a name with a proper file extension (e.g. ".png") is ideal because it allows Parse to deduce the content type of the file and set appropriate HTTP headers when it is fetched.

Parameters:
  `name` - The file's name, ideally with extension. The file name must begin with an alphanumeric character, and consist of alphanumeric characters, periods, spaces, underscores, or dashes.
  `data` - The file's data.

#### ParseFile

    public ParseFile(byte[] data,
             String contentType)

Creates a new file from a byte array, and content type. Content type will be used instead of auto-detection by file extension.

Parameters:
  `data` - The file's data.
  `contentType` - The file's content type.

### Method Detail

#### getName

    public String getName()

The filename. Before save is called, this is just the filename given by the user (if any). After save is called, that name gets prefixed with a unique identifier.

Returns:
  The file's name.

#### isDirty

    public boolean isDirty()

Whether the file still needs to be saved.

Returns:
  Whether the file needs to be saved.

#### isDataAvailable

    public boolean isDataAvailable()

Whether the file has available data.

#### getUrl

    public String getUrl()

This returns the url of the file. It's only available after you save or after you get the file from a ParseObject.

Returns:
  The url of the file.

#### save

    public void save()
              throws ParseException

Saves the file to the Parse cloud synchronously.

Throws:
  `ParseException`

#### saveInBackground

    public Task<Void> saveInBackground(ProgressCallback uploadProgressCallback)

Saves the file to the Parse cloud in a background thread. `progressCallback` is guaranteed to be called with 100 before saveCallback is called.

Parameters:
  `uploadProgressCallback` - A ProgressCallback that is called periodically with progress updates.
Returns:
  A Task that will be resolved when the save completes.

#### saveInBackground

    public Task<Void> saveInBackground()

Saves the file to the Parse cloud in a background thread.

Returns:
  A Task that will be resolved when the save completes.

#### saveInBackground

    public void saveInBackground(SaveCallback saveCallback,
                        ProgressCallback progressCallback)

Saves the file to the Parse cloud in a background thread. `progressCallback` is guaranteed to be called with 100 before saveCallback is called.

Parameters:
  `saveCallback` - A SaveCallback that gets called when the save completes.
  `progressCallback` - A ProgressCallback that is called periodically with progress updates.

#### saveInBackground

    public void saveInBackground(SaveCallback callback)

Saves the file to the Parse cloud in a background thread.

Parameters:
  `callback` - A SaveCallback that gets called when the save completes.

#### getData

    public byte[] getData()
                   throws ParseException

Synchronously gets the data from cache if available or fetches its content from the network. You probably want to use `ParseFile.getDataInBackground()` instead unless you're already in a background thread.

Throws:
  `ParseException`

#### getDataInBackground

    public Task<byte[]> getDataInBackground(ProgressCallback progressCallback)

Asynchronously gets the data from cache if available or fetches its content from the network. A `ProgressCallback` will be called periodically with progress updates.

Parameters:
  `progressCallback` - A `ProgressCallback` that is called periodically with progress updates.
Returns:
  A Task that is resolved when the data has been fetched.

#### getDataInBackground

    public Task<byte[]> getDataInBackground()

Asynchronously gets the data from cache if available or fetches its content from the network.

Returns:
  A Task that is resolved when the data has been fetched.

#### getDataInBackground

    public void getDataInBackground(GetDataCallback dataCallback,
                           ProgressCallback progressCallback)

Asynchronously gets the data from cache if available or fetches its content from the network. A `ProgressCallback` will be called periodically with progress updates. A `GetDataCallback` will be called when the get completes.

Parameters:
  `dataCallback` - A `GetDataCallback` that is called when the get completes.
  `progressCallback` - A `ProgressCallback` that is called periodically with progress updates.

#### getDataInBackground

    public void getDataInBackground(GetDataCallback dataCallback)

Asynchronously gets the data from cache if available or fetches its content from the network. A `GetDataCallback` will be called when the get completes.

Parameters:
  `dataCallback` - A `GetDataCallback` that is called when the get completes.

#### getFile

    public File getFile()
                 throws ParseException

Synchronously gets the file pointer from cache if available or fetches its content from the network. You probably want to use `ParseFile.getFileInBackground()` instead unless you're already in a background thread. Note: The `File` location may change without notice and should not be stored to be accessed later.

Throws:
  `ParseException`

#### getFileInBackground

    public Task<File> getFileInBackground(ProgressCallback progressCallback)

Asynchronously gets the file pointer from cache if available or fetches its content from the network. The `ProgressCallback` will be called periodically with progress updates. Note: The `File` location may change without notice and should not be stored to be accessed later.

Parameters:
  `progressCallback` - A `ProgressCallback` that is called periodically with progress updates.
Returns:
  A Task that is resolved when the file pointer of this object has been fetched.

#### getFileInBackground

    public Task<File> getFileInBackground()

Asynchronously gets the file pointer from cache if available or fetches its content from the network. Note: The `File` location may change without notice and should not be stored to be accessed later.

Returns:
  A Task that is resolved when the data has been fetched.

#### getFileInBackground

    public void getFileInBackground(GetFileCallback fileCallback,
                           ProgressCallback progressCallback)

Asynchronously gets the file pointer from cache if available or fetches its content from the network. The `GetFileCallback` will be called when the get completes. The `ProgressCallback` will be called periodically with progress updates. The `ProgressCallback` is guaranteed to be called with 100 before the `GetFileCallback` is called. Note: The `File` location may change without notice and should not be stored to be accessed later.

Parameters:
  `fileCallback` - A `GetFileCallback` that is called when the get completes.
  `progressCallback` - A `ProgressCallback` that is called periodically with progress updates.

#### getFileInBackground

    public void getFileInBackground(GetFileCallback fileCallback)

Asynchronously gets the file pointer from cache if available or fetches its content from the network. The `GetFileCallback` will be called when the get completes. Note: The `File` location may change without notice and should not be stored to be accessed later.

Parameters:
  `fileCallback` - A `GetFileCallback` that is called when the get completes.

#### getDataStream

    public InputStream getDataStream()
                              throws ParseException

Synchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file. You probably want to use `ParseFile.getDataStreamInBackground(com.parse.ProgressCallback)` instead unless you're already in a background thread.

Throws:
  `ParseException`

#### getDataStreamInBackground

    public Task<InputStream> getDataStreamInBackground(ProgressCallback progressCallback)

Asynchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file. The `ProgressCallback` will be called periodically with progress updates.

Parameters:
  `progressCallback` - A `ProgressCallback` that is called periodically with progress updates.
Returns:
  A Task that is resolved when the data stream of this object has been fetched.

#### getDataStreamInBackground

    public Task<InputStream> getDataStreamInBackground()

Asynchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file.

Returns:
  A Task that is resolved when the data stream has been fetched.

#### getDataStreamInBackground

    public void getDataStreamInBackground(GetDataStreamCallback dataStreamCallback,
                                 ProgressCallback progressCallback)

Asynchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file. The `GetDataStreamCallback` will be called when the get completes. The `ProgressCallback` will be called periodically with progress updates. The `ProgressCallback` is guaranteed to be called with 100 before `GetDataStreamCallback` is called.

Parameters:
  `dataStreamCallback` - A `GetDataStreamCallback` that is called when the get completes.
  `progressCallback` - A `ProgressCallback` that is called periodically with progress updates.

#### getDataStreamInBackground

    public void getDataStreamInBackground(GetDataStreamCallback dataStreamCallback)

Asynchronously gets the data stream from cached file if available or fetches its content from the network, saves the content as cached file and returns the data stream of the cached file. The `GetDataStreamCallback` will be called when the get completes.

Parameters:
  `dataStreamCallback` - A `GetDataStreamCallback` that is called when the get completes.

#### cancel

    public void cancel()

Cancels the current network request and callbacks whether it's uploading or fetching data from the server.