public class JDBCClobFile extends Object implements Clob
Starting with 2.1, in addition to HSQLDB driver support for both client-side in-memory and remote SQL CLOB data implementations, this class is provided to expose efficient, relatively high-performance CLOB operations over client accessible files.
Design Notes
Although it is possible to implement a transactional version of this class, the present implementation directly propagates changes to the underlying file such that changes become visible as soon as they are either implicitly or explicitly flushed to disk.
| Modifier and Type | Field and Description | 
|---|---|
| static String | TEMP_FILE_PREFIX | 
| static String | TEMP_FILE_SUFFIX | 
| Constructor and Description | 
|---|
| JDBCClobFile()Convenience constructor for  JDBCClobFile((String)null). | 
| JDBCClobFile(File file)Convenience constructor for  JDBCClobFile(file,null). | 
| JDBCClobFile(File file,
            String encoding)Constructs a new JDBCClobFile instance backed by the given File object
 using the given encoding to read and write file content. | 
| JDBCClobFile(String encoding)Constructs a new JDBCClobFile instance backed by an File object
 created by File.createTempFile(TEMP_FILE_PREFIX, TEMP_FILE_SUFFIX),
 using the given encoding to read and write file content. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | free()This method frees the  Clobobject and releases the resources the resources
 that it holds. | 
| InputStream | getAsciiStream()Retrieves the  CLOBvalue designated by thisClobobject as an ASCII stream. | 
| Reader | getCharacterStream()Retrieves the  CLOBvalue designated by thisClobobject as ajava.io.Readerobject (or as a stream of
 characters). | 
| Reader | getCharacterStream(long pos,
                  long length)Returns a  Readerobject that contains a partialClobvalue, starting
 with the character specified by pos, which is length characters in length. | 
| String | getEncoding() | 
| File | getFile()Retrieves the canonical File object denoting the file that
 backs this CLOB. | 
| String | getSubString(long pos,
            int length)Retrieves a copy of the specified substring
 in the  CLOBvalue
 designated by thisClobobject. | 
| boolean | isDeleteOnFree()Retrieves whether an attempt to delete the backing file
 is made in response to invocation of  free(). | 
| long | length()Retrieves the number of characters
 in the  CLOBvalue
 designated by thisClobobject. | 
| long | position(char[] pattern,
        long start)Retrieves the character position at which the specified char[]
  patternappears in theCLOBvalue
 represented by thisClobobject. | 
| long | position(Clob pattern,
        long start)Retrieves the character position at which the specified
  Clobobjectsearchstrappears in thisClobobject. | 
| long | position(String searchstr,
        long start)Retrieves the character position at which the specified substring
  searchstrappears in the SQLCLOBvalue
 represented by thisClobobject. | 
| OutputStream | setAsciiStream(long pos)Retrieves a stream to be used to write Ascii characters to the
  CLOBvalue that thisClobobject represents,
 starting at positionpos. | 
| Writer | setCharacterStream(long pos)Retrieves a stream to be used to write a stream of Unicode characters
 to the  CLOBvalue that thisClobobject
 represents, at positionpos. | 
| void | setDeleteOnFree(boolean deleteOnFree)Assigns whether an attempt to delete the backing file
 is made in response to invocation of  free(). | 
| int | setString(long pos,
         String str)Writes the given Java  Stringto theCLOBvalue that thisClobobject designates at the positionpos. | 
| int | setString(long pos,
         String str,
         int offset,
         int len)Writes  lencharacters ofstr, starting
 at characteroffset, to theCLOBvalue
 that thisClobrepresents. | 
| void | truncate(long len)Truncates the  CLOBvalue that thisClobdesignates to have a length oflencharacters. | 
public static final String TEMP_FILE_PREFIX
public static final String TEMP_FILE_SUFFIX
public JDBCClobFile()
             throws SQLException
JDBCClobFile((String)null). SQLException - if the platform encoding is unsupported,
         the temp file cannot be created or some other
         error occurs that prevents the construction of a
         valid instance of this class.public JDBCClobFile(String encoding) throws SQLException
encoding - the name of the character encoding used to read and write
         character data in the underlying file, as well as to determine
         the character length of and character offsets into the underlying
         file. Specify null to denote the platform encoding.SQLException - if the given encoding is unsupported,
         the backing temp file could not be created or if a security
         manager exists and its SecurityManager.checkWrite(java.lang.String)public JDBCClobFile(File file) throws SQLException
JDBCClobFile(file,null).file - that is to back the new CLOB instance.SQLException - if an I/O error occurs, which is possible because the
         construction of the canonical pathname may require
         file-system queries; a required system property value
         cannot be accessed; a security manager exists and its
         SecurityManager.checkRead(java.io.FileDescriptor)public JDBCClobFile(File file, String encoding) throws SQLException
file - that is to back the new CLOB instance.encoding - the name of the character encoding used to read and write
         character data in the underlying file, as well as to determine
         the character length of and character offsets into the underlying
         file. Specify null to denote the platform encoding.SQLException - if the given encoding is unsupported;
         an I/O error occurs, which is possible because the
         construction of the canonical pathname may require
         file-system queries; a required system property value
         cannot be accessed; a security manager exists and its
         SecurityManager.checkRead(java.io.FileDescriptor)public long length()
            throws SQLException
CLOB value
 designated by this Clob object.length in interface ClobCLOB in charactersSQLException - if there is an error accessing the
            length of the CLOB valueSQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic String getSubString(long pos, int length) throws SQLException
CLOB value
 designated by this Clob object.
 The substring begins at position
 pos and has up to length consecutive
 characters.getSubString in interface Clobpos - the first character of the substring to be extracted.
            The first character is at position 1.length - the number of consecutive characters to be copied;
 the value for length must be 0 or greaterString that is the specified substring in
         the CLOB value designated by this Clob objectSQLException - if there is an error accessing the
            CLOB value; if pos is less than 1 or length is
 less than 0SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic Reader getCharacterStream() throws SQLException
CLOB value designated by this Clob
 object as a java.io.Reader object (or as a stream of
 characters).getCharacterStream in interface Clobjava.io.Reader object containing the
         CLOB dataSQLException - if there is an error accessing the
            CLOB valueSQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodsetCharacterStream(long)public InputStream getAsciiStream() throws SQLException
CLOB value designated by this Clob
 object as an ASCII stream.getAsciiStream in interface Clobjava.io.InputStream object containing the
         CLOB dataSQLException - if there is an error accessing the
            CLOB valueSQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodsetAsciiStream(long)public long position(char[] pattern,
                     long start)
              throws SQLException
pattern appears in the CLOB value
 represented by this Clob object.  The search
 begins at position start.pattern - the substring for which to searchstart - the position at which to begin searching; the first position
              is 1SQLException - if there is an error accessing the
            CLOB value or if pos is less than 1SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic long position(String searchstr, long start) throws SQLException
searchstr appears in the SQL CLOB value
 represented by this Clob object.  The search
 begins at position start.position in interface Clobsearchstr - the substring for which to searchstart - the position at which to begin searching; the first position
              is 1SQLException - if there is an error accessing the
            CLOB value or if pos is less than 1SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic long position(Clob pattern, long start) throws SQLException
Clob object searchstr appears in this
 Clob object.  The search begins at position
 start.position in interface Clobpattern - the Clob object for which to searchstart - the position at which to begin searching; the first
              position is 1Clob object appears
              or -1 if it is not present; the first position is 1SQLException - if there is an error accessing the
            CLOB value or if start is less than 1SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic int setString(long pos,
                     String str)
              throws SQLException
String to the CLOB
 value that this Clob object designates at the position
 pos. The string will overwrite the existing characters
 in the Clob object starting at the position
 pos.  If the end of the Clob value is reached
 while writing the given string, then the length of the Clob
 value will be increased to accommodate the extra characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
setString in interface Clobpos - the position at which to start writing to the CLOB
         value that this Clob object represents;
 The first position is 1str - the string to be written to the CLOB
        value that this Clob designatesSQLException - if there is an error accessing the
 CLOB value or if pos is less than 1SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic int setString(long pos,
                     String str,
                     int offset,
                     int len)
              throws SQLException
len characters of str, starting
 at character offset, to the CLOB value
 that this Clob represents.  The string will overwrite the existing characters
 in the Clob object starting at the position
 pos. If the end of the Clob value is reached
 while writing the given string, then the length of the Clob
 value will be increased to accommodate the extra characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
setString in interface Clobpos - the position at which to start writing to this
               CLOB object; The first position is 1str - the string to be written to the CLOB
        value that this Clob object representsoffset - the offset into str to start reading
        the characters to be writtenlen - the number of characters to be writtenSQLException - if there is an error accessing the
 CLOB value or if pos is less than 1SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic OutputStream setAsciiStream(long pos) throws SQLException
CLOB value that this Clob object represents,
 starting at position pos. Characters written to the stream
 will overwrite the existing characters
 in the Clob object starting at the position
 pos.  If the end of the Clob value is reached
 while writing characters to the stream, then the length of the Clob
 value will be increased to accommodate the extra characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
setAsciiStream in interface Clobpos - the position at which to start writing to this
            CLOB object; The first position is 1SQLException - if there is an error accessing the
 CLOB value or if pos is less than 1SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodgetAsciiStream()public Writer setCharacterStream(long pos) throws SQLException
CLOB value that this Clob object
 represents, at position pos. Characters written to the stream
 will overwrite the existing characters
 in the Clob object starting at the position
 pos.  If the end of the Clob value is reached
 while writing characters to the stream, then the length of the Clob
 value will be increased to accommodate the extra characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
 
 
 When the value specified for pos is greater then the
 length+1, an  SQLException is thrown.
 
setCharacterStream in interface Clobpos - the position at which to start writing to the
            CLOB value; The first position is 1SQLException - if there is an error accessing the
 CLOB value or if pos is less than 1SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodgetCharacterStream()public void truncate(long len)
              throws SQLException
CLOB value that this Clob
 designates to have a length of len
 characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
truncate in interface Cloblen - the length, in characters, to which the CLOB value
        should be truncatedSQLException - if there is an error accessing the
 CLOB value or if len is less than 0SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic void free()
          throws SQLException
Clob object and releases the resources the resources
 that it holds.  The object is invalid once the free method
 is called.
 
 After free has been called, any attempt to invoke a
 method other than free will result in a SQLException
 being thrown.  If free is called multiple times, the subsequent
 calls to free are treated as a no-op.
 
free in interface ClobSQLException - if an error occurs releasing
 the Clob's resourcesSQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic Reader getCharacterStream(long pos, long length) throws SQLException
Reader object that contains a partial Clob value, starting
 with the character specified by pos, which is length characters in length.getCharacterStream in interface Clobpos - the offset to the first character of the partial value to
 be retrieved.  The first character in the Clob is at position 1.length - the length in characters of the partial value to be retrieved.Reader through which the partial Clob value can be read.SQLException - if pos is less than 1 or if pos is greater than the number of
 characters in the Clob or if pos + length is greater than the number of
 characters in the ClobSQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic File getFile()
public String getEncoding()
public boolean isDeleteOnFree()
free().public void setDeleteOnFree(boolean deleteOnFree)
free().deleteOnFree - the new value to assignCopyright © 2001 - 2017 HSQL Development Group.