Mega Code Archive

 
Categories / Java Book / 004 File Stream
 

0244 FilterOutputStream

A filter output stream takes the data passed to its write() methods, filters it, and writes the filtered data to an underlying output stream. Filter output streams are created from subclasses of the concrete FilterOutputStream class, an OutputStream subclass. The following code extends FilterOutputStream. import java.io.FileInputStream; import java.io.FilterOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class Main { public static void main(String[] args) throws Exception { InputStream in = new FileInputStream("test.txt"); OutputStream out = System.out; PrintableOutputStream pout = new PrintableOutputStream(out); for (int c = in.read(); c != -1; c = in.read()) { pout.write(c); } out.close(); } } class PrintableOutputStream extends FilterOutputStream { public PrintableOutputStream(OutputStream out) { super(out); } public void write(int b) throws IOException { // carriage return, linefeed, and tab if (b == '\n' || b == '\r' || b == '\t') out.write(b); // non-printing characters else if (b < 32 || b > 126) out.write('?'); // printing, ASCII characters else out.write(b); } public void write(byte[] data, int offset, int length) throws IOException { for (int i = offset; i < offset + length; i++) { this.write(data[i]); } } } BufferedOutputStream is a subclass of FilterOutputStream. import java.io.BufferedOutputStream; import java.io.FileOutputStream; public class Main { public static void main(String[] args) throws Exception { BufferedOutputStream bufferedOutput = new BufferedOutputStream(new FileOutputStream( "yourFile.txt")); bufferedOutput.write("Line one".getBytes()); bufferedOutput.write("\n".getBytes()); bufferedOutput.write(65); bufferedOutput.close(); } }