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

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `AppEngineFile.FileSystem` Represents the back-end storage location of a file.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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` | `hasFinalizedName()`
    `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.

    - #### hasFinalizedName

          public boolean hasFinalizedName()

      Returns:
        a boolean indicating whether or not this instance has a finalized filename.