Mega Code Archive

 
Categories / Java Tutorial / File
 

Extends FilterOutputStream for printable characters

import java.io.FileInputStream; import java.io.FilterOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class MainClass {   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]);     }   } }