. Whether or not
a file is available or may be created depends upon the underlying
platform. Some platforms, in particular, allow a file to be opened
for writing by only one
(or other
file-writing object) at a time. In such situations the constructors in
this class will fail if the file involved is already open.
Constructor: |
public FileOutputStream(String name) throws FileNotFoundException {
this(name != null ? new File(name) : null, false);
}
Creates a file output stream to write to the file with the
specified name. A new FileDescriptor object is
created to represent this file connection.
First, if there is a security manager, its checkWrite
method is called with name as its argument.
If the file exists but is a directory rather than a regular file, does
not exist but cannot be created, or cannot be opened for any other
reason then a FileNotFoundException is thrown. Parameters:
name - the system-dependent filename
Throws:
FileNotFoundException - if the file exists but is a directory
rather than a regular file, does not exist but cannot
be created, or cannot be opened for any other reason
SecurityException - if a security manager exists and its
checkWrite method denies write access
to the file.
Also see:
- java.lang.SecurityManager#checkWrite(java.lang.String)
- exception:
FileNotFoundException - if the file exists but is a directory
rather than a regular file, does not exist but cannot
be created, or cannot be opened for any other reason
- exception:
SecurityException - if a security manager exists and its
checkWrite method denies write access
to the file.
|
public FileOutputStream(File file) throws FileNotFoundException {
this(file, false);
}
Creates a file output stream to write to the file represented by
the specified File object. A new
FileDescriptor object is created to represent this
file connection.
First, if there is a security manager, its checkWrite
method is called with the path represented by the file
argument as its argument.
If the file exists but is a directory rather than a regular file, does
not exist but cannot be created, or cannot be opened for any other
reason then a FileNotFoundException is thrown. Parameters:
file - the file to be opened for writing.
Throws:
FileNotFoundException - if the file exists but is a directory
rather than a regular file, does not exist but cannot
be created, or cannot be opened for any other reason
SecurityException - if a security manager exists and its
checkWrite method denies write access
to the file.
Also see:
- java.io.File#getPath()
- java.lang.SecurityException
- java.lang.SecurityManager#checkWrite(java.lang.String)
- exception:
FileNotFoundException - if the file exists but is a directory
rather than a regular file, does not exist but cannot
be created, or cannot be opened for any other reason
- exception:
SecurityException - if a security manager exists and its
checkWrite method denies write access
to the file.
|
public FileOutputStream(FileDescriptor fdObj) {
SecurityManager security = System.getSecurityManager();
if (fdObj == null) {
throw new NullPointerException();
}
if (security != null) {
security.checkWrite(fdObj);
}
this.fd = fdObj;
this.append = false;
/*
* FileDescriptor is being shared by streams.
* Ensure that it's GC'ed only when all the streams/channels are done
* using it.
*/
fd.incrementAndGetUseCount();
}
Creates a file output stream to write to the specified file
descriptor, which represents an existing connection to an actual
file in the file system.
First, if there is a security manager, its checkWrite
method is called with the file descriptor fdObj
argument as its argument.
If fdObj is null then a NullPointerException
is thrown.
This constructor does not throw an exception if fdObj
is invalid .
However, if the methods are invoked on the resulting stream to attempt
I/O on the stream, an IOException is thrown. Parameters:
fdObj - the file descriptor to be opened for writing
Throws:
SecurityException - if a security manager exists and its
checkWrite method denies
write access to the file descriptor
Also see:
- java.lang.SecurityManager#checkWrite(java.io.FileDescriptor)
- exception:
SecurityException - if a security manager exists and its
checkWrite method denies
write access to the file descriptor
|
public FileOutputStream(String name,
boolean append) throws FileNotFoundException {
this(name != null ? new File(name) : null, append);
}
Creates a file output stream to write to the file with the specified
name. If the second argument is true , then
bytes will be written to the end of the file rather than the beginning.
A new FileDescriptor object is created to represent this
file connection.
First, if there is a security manager, its checkWrite
method is called with name as its argument.
If the file exists but is a directory rather than a regular file, does
not exist but cannot be created, or cannot be opened for any other
reason then a FileNotFoundException is thrown. Parameters:
name - the system-dependent file name
append - if true , then bytes will be written
to the end of the file rather than the beginning
Throws:
FileNotFoundException - if the file exists but is a directory
rather than a regular file, does not exist but cannot
be created, or cannot be opened for any other reason.
SecurityException - if a security manager exists and its
checkWrite method denies write access
to the file.
Also see:
- java.lang.SecurityManager#checkWrite(java.lang.String)
- exception:
FileNotFoundException - if the file exists but is a directory
rather than a regular file, does not exist but cannot
be created, or cannot be opened for any other reason.
- exception:
SecurityException - if a security manager exists and its
checkWrite method denies write access
to the file.
- since:
JDK1.1 -
|
public FileOutputStream(File file,
boolean append) throws FileNotFoundException {
String name = (file != null ? file.getPath() : null);
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(name);
}
if (name == null) {
throw new NullPointerException();
}
this.fd = new FileDescriptor();
this.append = append;
fd.incrementAndGetUseCount();
open(name, append);
}
Creates a file output stream to write to the file represented by
the specified File object. If the second argument is
true , then bytes will be written to the end of the file
rather than the beginning. A new FileDescriptor object is
created to represent this file connection.
First, if there is a security manager, its checkWrite
method is called with the path represented by the file
argument as its argument.
If the file exists but is a directory rather than a regular file, does
not exist but cannot be created, or cannot be opened for any other
reason then a FileNotFoundException is thrown. Parameters:
file - the file to be opened for writing.
append - if true , then bytes will be written
to the end of the file rather than the beginning
Throws:
FileNotFoundException - if the file exists but is a directory
rather than a regular file, does not exist but cannot
be created, or cannot be opened for any other reason
SecurityException - if a security manager exists and its
checkWrite method denies write access
to the file.
Also see:
- java.io.File#getPath()
- java.lang.SecurityException
- java.lang.SecurityManager#checkWrite(java.lang.String)
- exception:
FileNotFoundException - if the file exists but is a directory
rather than a regular file, does not exist but cannot
be created, or cannot be opened for any other reason
- exception:
SecurityException - if a security manager exists and its
checkWrite method denies write access
to the file.
- since:
1.4 -
|
Method from java.io.FileOutputStream Detail: |
public void close() throws IOException {
synchronized (closeLock) {
if (closed) {
return;
}
closed = true;
}
if (channel != null) {
/*
* Decrement FD use count associated with the channel
* The use count is incremented whenever a new channel
* is obtained from this stream.
*/
fd.decrementAndGetUseCount();
channel.close();
}
/*
* Decrement FD use count associated with this stream
*/
int useCount = fd.decrementAndGetUseCount();
/*
* If FileDescriptor is still in use by another stream, the finalizer
* will not close it.
*/
if ((useCount < = 0) || !isRunningFinalize()) {
close0();
}
}
|
protected void finalize() throws IOException {
if (fd != null) {
if (fd == FileDescriptor.out || fd == FileDescriptor.err) {
flush();
} else {
/*
* Finalizer should not release the FileDescriptor if another
* stream is still using it. If the user directly invokes
* close() then the FileDescriptor is also released.
*/
runningFinalize.set(Boolean.TRUE);
try {
close();
} finally {
runningFinalize.set(Boolean.FALSE);
}
}
}
}
Cleans up the connection to the file, and ensures that the
close method of this file output stream is
called when there are no more references to this stream. |
public FileChannel getChannel() {
synchronized (this) {
if (channel == null) {
channel = FileChannelImpl.open(fd, false, true, append, this);
/*
* Increment fd's use count. Invoking the channel's close()
* method will result in decrementing the use count set for
* the channel.
*/
fd.incrementAndGetUseCount();
}
return channel;
}
}
Returns the unique FileChannel
object associated with this file output stream.
The initial position of the returned channel will be equal to the
number of bytes written to the file so far unless this stream is in
append mode, in which case it will be equal to the size of the file.
Writing bytes to this stream will increment the channel's position
accordingly. Changing the channel's position, either explicitly or by
writing, will change this stream's file position. |
public final FileDescriptor getFD() throws IOException {
if (fd != null) return fd;
throw new IOException();
}
Returns the file descriptor associated with this stream. |
public void write(int b) throws IOException {
write(b, append);
}
Writes the specified byte to this file output stream. Implements
the write method of OutputStream . |
public void write(byte[] b) throws IOException {
writeBytes(b, 0, b.length, append);
}
Writes b.length bytes from the specified byte array
to this file output stream. |
public void write(byte[] b,
int off,
int len) throws IOException {
writeBytes(b, off, len, append);
}
Writes len bytes from the specified byte array
starting at offset off to this file output stream. |