SeekableOutputStream.java
上传用户:btjssb159
上传日期:2018-01-04
资源大小:241k
文件大小:3k
源码类别:

DNA

开发平台:

Java

  1. /*
  2.  * Copyright (c) 2001 Sun Microsystems, Inc. All Rights Reserved.
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without 
  5.  * modification, are permitted provided that the following conditions are met:
  6.  * 
  7.  * -Redistributions of source code must retain the above copyright notice, this 
  8.  * list of conditions and the following disclaimer.
  9.  *
  10.  * -Redistribution in binary form must reproduct the above copyright notice,
  11.  * this list of conditions and the following disclaimer in the documentation
  12.  * and/or other materials provided with the distribution.
  13.  * 
  14.  * Neither the name of Sun Microsystems, Inc. or the names of contributors may
  15.  * be used to endorse or promote products derived from this software without
  16.  * specific prior written permission.
  17.  * 
  18.  * This software is provided "AS IS," without a warranty of any kind. ALL
  19.  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
  20.  * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
  21.  * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
  22.  * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
  23.  * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
  24.  * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
  25.  * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
  26.  * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
  27.  * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
  28.  * POSSIBILITY OF SUCH DAMAGES.
  29.  * 
  30.  * You acknowledge that Software is not designed,licensed or intended for use in 
  31.  * the design, construction, operation or maintenance of any nuclear facility.
  32.  */
  33. import java.io.IOException;
  34. import java.io.OutputStream;
  35. import java.io.RandomAccessFile;
  36. /**
  37.  * An <code>OutputStream</code> which can seek to an arbitrary offset.
  38.  */
  39. public class SeekableOutputStream extends OutputStream {
  40.     private RandomAccessFile file;
  41.     /**
  42.      * Constructs a <code>SeekableOutputStream</code> from a
  43.      * <code>RandomAccessFile</code>.  Unless otherwise indicated,
  44.      * all method invocations are fowarded to the underlying
  45.      * <code>RandomAccessFile</code>.
  46.      *
  47.      * @param file The <code>RandomAccessFile</code> to which calls
  48.      *             will be forwarded.
  49.      * @exception IllegalArgumentException if <code>file</code> is
  50.      *            <code>null</code>.
  51.      */
  52.     public SeekableOutputStream(RandomAccessFile file) {
  53.         if(file == null) {
  54.             throw new IllegalArgumentException(JaiI18N.getString("SeekableOutputStream0"));
  55.         }
  56.         this.file = file;
  57.     }
  58.     public void write(int b) throws IOException {
  59.         file.write(b);
  60.     }
  61.     public void write(byte b[]) throws IOException {
  62.         file.write(b);
  63.     }
  64.     public void write(byte b[], int off, int len) throws IOException {
  65.         file.write(b, off, len);
  66.     }
  67.     /**
  68.      * Invokes <code>getFD().sync()</code> on the underlying
  69.      * <code>RandomAccessFile</code>.
  70.      */
  71.     public void flush() throws IOException {
  72.         file.getFD().sync();
  73.     }
  74.     public void close() throws IOException {
  75.         file.close();
  76.     }
  77.     public long getFilePointer() throws IOException {
  78.         return file.getFilePointer();
  79.     }
  80.     public void seek(long pos) throws IOException {
  81.         file.seek(pos);
  82.     }
  83. }