// FileOutputStream.java - Write bytes to a file. /* Copyright (C) 1998, 1999 Cygnus Solutions 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 * @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) throws SecurityException, IOException { SecurityManager s = System.getSecurityManager(); if (s != null) s.checkWrite(path); fd = new FileDescriptor (path, (append ? FileDescriptor.APPEND : FileDescriptor.WRITE)); } public FileOutputStream (String path) throws SecurityException, IOException { this (path, false); } public FileOutputStream (File file) throws SecurityException, IOException { this (file.getPath(), false); } public FileOutputStream (FileDescriptor fdObj) throws SecurityException { 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; }