FileDocCategorySizeDatePackage
FromNetASCIIOutputStream.javaAPI DocApache Commons NET 1.4.1 API4922Sat Dec 03 10:05:50 GMT 2005org.apache.commons.net.io

FromNetASCIIOutputStream

public final class FromNetASCIIOutputStream extends FilterOutputStream
This class wraps an output stream, replacing all occurrences of <CR><LF> (carriage return followed by a linefeed), which is the NETASCII standard for representing a newline, with the local line separator representation. You would use this class to implement ASCII file transfers requiring conversion from NETASCII.

Because of the translation process, a call to flush() will not flush the last byte written if that byte was a carriage return. A call to {@link #close close() }, however, will flush the carriage return.

author
Daniel F. Savarese

Fields Summary
private boolean
__lastWasCR
Constructors Summary
public FromNetASCIIOutputStream(OutputStream output)
Creates a FromNetASCIIOutputStream instance that wraps an existing OutputStream.

param
output The OutputStream to wrap.

        super(output);
        __lastWasCR = false;
    
Methods Summary
private void__write(int ch)

        switch (ch)
        {
        case '\r":
            __lastWasCR = true;
            // Don't write anything.  We need to see if next one is linefeed
            break;
        case '\n":
            if (__lastWasCR)
            {
                out.write(FromNetASCIIInputStream._lineSeparatorBytes);
                __lastWasCR = false;
                break;
            }
            __lastWasCR = false;
            out.write('\n");
            break;
        default:
            if (__lastWasCR)
            {
                out.write('\r");
                __lastWasCR = false;
            }
            out.write(ch);
            break;
        }
    
public synchronized voidclose()
Closes the stream, writing all pending data.

exception
IOException If an error occurs while closing the stream.

        if (FromNetASCIIInputStream._noConversionRequired)
        {
            super.close();
            return ;
        }

        if (__lastWasCR)
            out.write('\r");
        super.close();
    
public synchronized voidwrite(int ch)
Writes a byte to the stream. Note that a call to this method might not actually write a byte to the underlying stream until a subsequent character is written, from which it can be determined if a NETASCII line separator was encountered. This is transparent to the programmer and is only mentioned for completeness.

param
ch The byte to write.
exception
IOException If an error occurs while writing to the underlying stream.

        if (FromNetASCIIInputStream._noConversionRequired)
        {
            out.write(ch);
            return ;
        }

        __write(ch);
    
public synchronized voidwrite(byte[] buffer)
Writes a byte array to the stream.

param
buffer The byte array to write.
exception
IOException If an error occurs while writing to the underlying stream.

        write(buffer, 0, buffer.length);
    
public synchronized voidwrite(byte[] buffer, int offset, int length)
Writes a number of bytes from a byte array to the stream starting from a given offset.

param
buffer The byte array to write.
param
offset The offset into the array at which to start copying data.
param
length The number of bytes to write.
exception
IOException If an error occurs while writing to the underlying stream.

        if (FromNetASCIIInputStream._noConversionRequired)
        {
            // FilterOutputStream method is very slow.
            //super.write(buffer, offset, length);
            out.write(buffer, offset, length);
            return ;
        }

        while (length-- > 0)
            __write(buffer[offset++]);