Agent System POND 1.2 (28.2.2002)

PkgAgentSystem
Class LimitedFileOutputStream

java.lang.Object
  |
  +--java.io.OutputStream
        |
        +--PkgAgentSystem.LimitedFileOutputStream

public class LimitedFileOutputStream
extends OutputStream

A replacement for FileOutputStream which limits the number of bytes written to the disk through all of its instances. The limit can be reset if the permission SecurityPermission("ResetFilelengthLimit") is held by the caller. Checking occurs only in intervals for optimization (currently all 1024 bytes).
You cannot insert this instead of a standard FileOutputStream, as this would result in a NoClassDefFoundError), so agents must use this "voluntarily" (The classloader does not load the class FileOutputStream so they have no other option).
Must be subclass of OutputStream, so we can insert it in writers, etc.

Version:
1.0, 1.7.2000
Author:
Michael Sonntag
See Also:
AgentClassLoader.loadClass(String,boolean)

Constructor Summary
LimitedFileOutputStream(File file)
          Creates a file output stream to write to the file represented by the specified File object.
LimitedFileOutputStream(FileDescriptor fdObj)
          Creates an output file stream to write to the specified file descriptor, which represents an existing connection to an actual file in the file system.
LimitedFileOutputStream(String name)
          Creates an output file stream to write to the file with the specified name.
LimitedFileOutputStream(String name, boolean append)
          Creates an output file stream to write to the file with the specified name.
 
Method Summary
 void close()
           
 void flush()
           
static void resetLimit()
          Resets the limit.
 void write(byte[] b)
          Writes b.length bytes from the specified byte array to this file output stream.
 void write(byte[] b, int off, int len)
          Writes len bytes from the specified byte array starting at offset off to this file output stream.
 void write(int b)
          Writes the specified byte to this file output stream.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LimitedFileOutputStream

public LimitedFileOutputStream(String name)
                        throws FileNotFoundException
Creates an output file 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. See also java.lang.SecurityManager#checkWrite(String)

LimitedFileOutputStream

public LimitedFileOutputStream(String name,
                               boolean append)
                        throws FileNotFoundException
Creates an output file 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. See also java.lang.SecurityManager#checkWrite(String)
Since:
JDK1.1

LimitedFileOutputStream

public LimitedFileOutputStream(File file)
                        throws IOException
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.
See Also:
File.getPath(), See also java.lang.SecurityManager#checkWrite(String)

LimitedFileOutputStream

public LimitedFileOutputStream(FileDescriptor fdObj)
Creates an output file 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.

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. See also java.lang.SecurityManager#checkWrite(FileDescriptor)
Method Detail

write

public void write(int b)
           throws IOException
Writes the specified byte to this file output stream. Implements the write method of OutputStream.
Overrides:
write in class OutputStream
Parameters:
b - the byte to be written.
Throws:
IOException - if an I/O error occurs.
SecurityException - if the limit is exceeded

write

public void write(byte[] b)
           throws IOException
Writes b.length bytes from the specified byte array to this file output stream.
Overrides:
write in class OutputStream
Parameters:
b - the data.
Throws:
IOException - if an I/O error occurs.
SecurityException - if the limit is exceeded

write

public void write(byte[] b,
                  int off,
                  int len)
           throws IOException
Writes len bytes from the specified byte array starting at offset off to this file output stream.
Overrides:
write in class OutputStream
Parameters:
b - the data.
off - the start offset in the data.
len - the number of bytes to write.
Throws:
IOException - if an I/O error occurs.
SecurityException - if the limit is exceeded

resetLimit

public static void resetLimit()
Resets the limit. Checks SecurityPermission("ResetFilelengthLimit") to see if this is allowed.
Throws:
SecurityException - if the caller is not allowed to change the limit

flush

public void flush()
           throws IOException
Overrides:
flush in class OutputStream

close

public void close()
           throws IOException
Overrides:
close in class OutputStream

Agent System POND 1.2 (28.2.2002)

Submit a bug

Copyright 2001,2002 Michael Sonntag & Institute for Information Processing and Microprocessor Technology (FIM), Johannes-Kepler-University Linz, Altenbergerstr. 69, A-4040 Linz, Austria.