FileOutputStream.java 2.22 KB
Newer Older
Tom Tromey committed
1 2
// FileOutputStream.java - Write bytes to a file.

Tom Tromey committed
3
/* Copyright (C) 1998, 1999, 2001  Free Software Foundation
Tom Tromey committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

   This file is part of libgcj.

This software is copyrighted work licensed under the terms of the
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
details.  */

package java.io;

/**
 * @author Tom Tromey <tromey@cygnus.com>
 * @date September 24, 1998 
 */

/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
 * "The Java Language Specification", ISBN 0-201-63451-1
 * Status:  Complete to version 1.1.
 */

public class FileOutputStream extends OutputStream
{
  public FileOutputStream (String path, boolean append)
Tom Tromey committed
26
    throws SecurityException, FileNotFoundException
Tom Tromey committed
27 28 29 30 31 32 33 34 35
  {
    SecurityManager s = System.getSecurityManager();
    if (s != null)
      s.checkWrite(path);
    fd = new FileDescriptor (path, (append
				    ? FileDescriptor.APPEND
				    : FileDescriptor.WRITE));
  }

Tom Tromey committed
36 37
  public FileOutputStream (String path)
    throws SecurityException, FileNotFoundException
Tom Tromey committed
38 39 40 41
  {
    this (path, false);
  }

Tom Tromey committed
42 43
  public FileOutputStream (File file)
    throws SecurityException, FileNotFoundException
Tom Tromey committed
44 45 46 47
  {
    this (file.getPath(), false);
  }

Tom Tromey committed
48 49
  public FileOutputStream (FileDescriptor fdObj)
    throws SecurityException
Tom Tromey committed
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
  {
    SecurityManager s = System.getSecurityManager();
    if (s != null)
      s.checkWrite(fdObj);
    fd = fdObj;
  }

  protected void finalize () throws IOException
  {
    // We don't actually need this, but we include it because it is
    // mentioned in the JCL.
  }

  public final FileDescriptor getFD () throws IOException
  {
    if (! fd.valid())
      throw new IOException ();
    return fd;
  }

  public void write (int b) throws IOException
  {
    fd.write (b);
  }

  public void write (byte[] b) throws IOException, NullPointerException
  {
    fd.write (b, 0, b.length);
  }

  public void write (byte[] b, int off, int len)
    throws IOException, NullPointerException, IndexOutOfBoundsException
  {
    if (off < 0 || len < 0 || off + len > b.length)
      throw new ArrayIndexOutOfBoundsException ();
    fd.write (b, off, len);
  }

  public void close () throws IOException
  {
    if (fd.valid())
      fd.close();
  }

  // Instance variables.
  private FileDescriptor fd;
}