## org.h2.store
Class FileStore

    java.lang.Object
      org.h2.store.FileStore

Direct Known Subclasses:
  SecureFileStore

    public class FileStore

extends java.lang.Object

This class is an abstraction of a random access file. Each file contains a magic header, and reading / writing is done in blocks. See also `SecureFileStore`

Field Summary
`static int` `HEADER_LENGTH` The size of the file header in bytes.
`protected java.lang.String` `name` The file name.

Constructor Summary
`protected` `FileStore(DataHandler handler, java.lang.String name, java.lang.String mode)` Create a new file using the given settings.

Method Summary
`void` `autoDelete()` Automatically delete the file once it is no longer in use.
`void` `close()` Close the file.
`void` `closeAndDeleteSilently()` Close the file (ignoring exceptions) and delete the file.
`void` `closeFile()` Close the file.
`void` `closeSilently()` Close the file without throwing any exceptions.
`protected byte[]` `generateSalt()` Generate the random salt bytes if required.
`long` `getFilePointer()` Get the current location of the file pointer.
`void` `init()` Initialize the file.
`protected void` `initKey(byte[] salt)` Initialize the key using the given salt.
`long` `length()` Get the file size in bytes.
`static FileStore` `open(DataHandler handler, java.lang.String name, java.lang.String mode)` Open a non encrypted file store with the given settings.
`static FileStore` `open(DataHandler handler, java.lang.String name, java.lang.String mode, java.lang.String cipher, byte[] key)` Open an encrypted file store with the given settings.
`static FileStore` `open(DataHandler handler, java.lang.String name, java.lang.String mode, java.lang.String cipher, byte[] key, int keyIterations)` Open an encrypted file store with the given settings.
`void` `openFile()` Re-open the file.
`void` `readFully(byte[] b, int off, int len)` Read a number of bytes.
`protected void` `readFullyDirect(byte[] b, int off, int len)` Read a number of bytes without decrypting.
`void` `releaseLock()` Release the file lock.
`void` `seek(long pos)` Go to the specified file location.
`void` `setCheckedWriting(boolean value)`
`void` `setLength(long newLength)` Set the length of the file.
`void` `stopAutoDelete()` No longer automatically delete the file once it is no longer in use.
`void` `sync()` Call fsync.
`boolean` `tryLock()` Try to lock the file.
`void` `write(byte[] b, int off, int len)` Write a number of bytes.
`protected void` `writeDirect(byte[] b, int off, int len)` Write a number of bytes without encrypting.

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

Field Detail

### HEADER_LENGTH

    public static final int HEADER_LENGTH

  The size of the file header in bytes.

  See Also:
    Constant Field Values

### name

    protected java.lang.String name

  The file name.

Constructor Detail

### FileStore

    protected FileStore(DataHandler handler,
                        java.lang.String name,
                        java.lang.String mode)

  Create a new file using the given settings.

  Parameters:
    `handler` - the callback object
    `name` - the file name
    `mode` - the access mode ("r", "rw", "rws", "rwd")

Method Detail

### open

    public static FileStore open(DataHandler handler,
                                 java.lang.String name,
                                 java.lang.String mode)

  Open a non encrypted file store with the given settings.

  Parameters:
    `handler` - the data handler
    `name` - the file name
    `mode` - the access mode (r, rw, rws, rwd)
  Returns:
    the created object

### open

    public static FileStore open(DataHandler handler,
                                 java.lang.String name,
                                 java.lang.String mode,
                                 java.lang.String cipher,
                                 byte[] key)

  Open an encrypted file store with the given settings.

  Parameters:
    `handler` - the data handler
    `name` - the file name
    `mode` - the access mode (r, rw, rws, rwd)
    `cipher` - the name of the cipher algorithm
    `key` - the encryption key
  Returns:
    the created object

### open

    public static FileStore open(DataHandler handler,
                                 java.lang.String name,
                                 java.lang.String mode,
                                 java.lang.String cipher,
                                 byte[] key,
                                 int keyIterations)

  Open an encrypted file store with the given settings.

  Parameters:
    `handler` - the data handler
    `name` - the file name
    `mode` - the access mode (r, rw, rws, rwd)
    `cipher` - the name of the cipher algorithm
    `key` - the encryption key
    `keyIterations` - the number of iterations the key should be hashed
  Returns:
    the created object

### generateSalt

    protected byte[] generateSalt()

  Generate the random salt bytes if required.

  Returns:
    the random salt or the magic

### initKey

    protected void initKey(byte[] salt)

  Initialize the key using the given salt.

  Parameters:
    `salt` - the salt

### setCheckedWriting

    public void setCheckedWriting(boolean value)

### init

    public void init()

  Initialize the file. This method will write or check the file header if required.

### close

    public void close()

  Close the file.

### closeSilently

    public void closeSilently()

  Close the file without throwing any exceptions. Exceptions are simply ignored.

### closeAndDeleteSilently

    public void closeAndDeleteSilently()

  Close the file (ignoring exceptions) and delete the file.

### readFullyDirect

    protected void readFullyDirect(byte[] b,
                                   int off,
                                   int len)

  Read a number of bytes without decrypting.

  Parameters:
    `b` - the target buffer
    `off` - the offset
    `len` - the number of bytes to read

### readFully

    public void readFully(byte[] b,
                          int off,
                          int len)

  Read a number of bytes.

  Parameters:
    `b` - the target buffer
    `off` - the offset
    `len` - the number of bytes to read

### seek

    public void seek(long pos)

  Go to the specified file location.

  Parameters:
    `pos` - the location

### writeDirect

    protected void writeDirect(byte[] b,
                               int off,
                               int len)

  Write a number of bytes without encrypting.

  Parameters:
    `b` - the source buffer
    `off` - the offset
    `len` - the number of bytes to write

### write

    public void write(byte[] b,
                      int off,
                      int len)

  Write a number of bytes.

  Parameters:
    `b` - the source buffer
    `off` - the offset
    `len` - the number of bytes to write

### setLength

    public void setLength(long newLength)

  Set the length of the file. This will expand or shrink the file.

  Parameters:
    `newLength` - the new file size

### length

    public long length()

  Get the file size in bytes.

  Returns:
    the file size

### getFilePointer

    public long getFilePointer()

  Get the current location of the file pointer.

  Returns:
    the location

### sync

    public void sync()

  Call fsync. Depending on the operating system and hardware, this may or may not in fact write the changes.

### autoDelete

    public void autoDelete()

  Automatically delete the file once it is no longer in use.

### stopAutoDelete

    public void stopAutoDelete()

  No longer automatically delete the file once it is no longer in use.

### closeFile

    public void closeFile()
                   throws java.io.IOException

  Close the file. The file may later be re-opened using openFile.

  Throws:
    `java.io.IOException`

### openFile

    public void openFile()
                  throws java.io.IOException

  Re-open the file. The file pointer will be reset to the previous location.

  Throws:
    `java.io.IOException`

### tryLock

    public boolean tryLock()

  Try to lock the file.

  Returns:
    true if successful

### releaseLock

    public void releaseLock()

  Release the file lock.