FromNetASCIIOutputStreampublic 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.
|
Fields Summary |
---|
private boolean | __lastWasCR |
Constructors Summary |
---|
public FromNetASCIIOutputStream(OutputStream output)Creates a FromNetASCIIOutputStream instance that wraps an existing
OutputStream.
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 void | close()Closes the stream, writing all pending data.
if (FromNetASCIIInputStream._noConversionRequired)
{
super.close();
return ;
}
if (__lastWasCR)
out.write('\r");
super.close();
| public synchronized void | write(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.
if (FromNetASCIIInputStream._noConversionRequired)
{
out.write(ch);
return ;
}
__write(ch);
| public synchronized void | write(byte[] buffer)Writes a byte array to the stream.
write(buffer, 0, buffer.length);
| public synchronized void | write(byte[] buffer, int offset, int length)Writes a number of bytes from a byte array to the stream starting from
a given offset.
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++]);
|
|