# AppEngineFile
Date: 2012-02-24

## com.google.appengine.api.files
Class AppEngineFile

    java.lang.Object
      com.google.appengine.api.files.AppEngineFile

All Implemented Interfaces:
  java.io.Serializable

    public class AppEngineFile

extends java.lang.Object
implements java.io.Serializable

An `AppEngineFile` represents a file in one of the Google App Engine file systems.

A file has a path of the form `/<fileSystem>/<namePart>` . The path consists of a file system which is one of several identifiers for a Google App Engine file system, and a name part wich is an arbitrary String. For example "/blobstore/Aie7uHVwtvM" is a path in which "blobstore" is the file system and "Aie7uHVwtvM" is the name part.

The enum `AppEngineFile.FileSystem` represents the available file systems. Each file system has particular attributes regarding permanence, reliability availability, and cost.

In the current release of Google App Engine, `BLOBSTORE` and `GS` are the only available file systems. These file systems store files as blobs in the BlobStore and in Google Storage respectively.

App Engine files may only be accessed using a particular access pattern: Newly created files may be appended to until they are finalized. After a file is finalized it may be read, but it may no longer be written.

To create a new `BLOBSTORE` file use `FileService.createNewBlobFile(String)`. This returns an instance of `AppEngineFile` with a `FileSystem` of `BLOBSTORE`.

To create a new `GS` file use `FileService.createNewGSFile(GSFileOptions)`. This returns an instance of `AppEngineFile` with a `FileSystem` of `GS`. This instance cannot be used for reading. For a full file lifecycle example, see `FileService`.

See Also:
  Serialized Form

Nested Class Summary
`static class` `AppEngineFile.FileSystem` Represents the back-end storage location of a file.

Constructor Summary
`AppEngineFile(AppEngineFile.FileSystem fileSystem, java.lang.String namePart)` Constructs an `AppEngineFile` from the given data
`AppEngineFile(java.lang.String fullPath)` Constructs an `AppEngineFile` from the given data

Method Summary
`AppEngineFile.FileSystem` `getFileSystem()` Returns the file system of the file.
`java.lang.String` `getFullPath()` Returns the full path of the file.
`java.lang.String` `getNamePart()` Returns the name part of the file.
`boolean` `isReadable()` Returns a boolean indicating whether or not this instance can be used for reading.
`boolean` `isWritable()` Returns a boolean indicating whether or not this instance can be used for writing.
`java.lang.String` `toString()`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### AppEngineFile

    public AppEngineFile(AppEngineFile.FileSystem fileSystem,
                         java.lang.String namePart)

  Constructs an `AppEngineFile` from the given data

  Parameters:
    `fileSystem` - a `non-null FileSystem`.
    `namePart` - a `non-null` name part. Warning: Do not use the full path here.

### AppEngineFile

    public AppEngineFile(java.lang.String fullPath)

  Constructs an `AppEngineFile` from the given data

  Parameters:
    `fullPath` - a `non-null` full path. Warning: Do not use a name part here.

Method Detail

### getNamePart

    public java.lang.String getNamePart()

  Returns the name part of the file.

### getFullPath

    public java.lang.String getFullPath()

  Returns the full path of the file.

### getFileSystem

    public AppEngineFile.FileSystem getFileSystem()

  Returns the file system of the file.

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### isWritable

    public boolean isWritable()

  Returns a boolean indicating whether or not this instance can be used for writing.

### isReadable

    public boolean isReadable()

  Returns a boolean indicating whether or not this instance can be used for reading.