60 likes | 157 Vues
This document provides an in-depth overview of Java's input and output classes, focusing on the use of readers and writers for handling character and byte streams. Key classes such as BufferedReader, FileReader, InputStreamReader, and various Writer classes (FileWriter, PrintWriter, etc.) are discussed. You'll learn how to create, read from, and write to files, as well as utilize streams effectively. Additionally, custom output stream examples, such as NullOutputStream and CapOutputStream, demonstrate how to extend standard output functionalities.
E N D
Files and I/O CSC1351
Input • Reader - based on chars • BufferedReader - wraps a reader • String readLine() • FileReader - opens files for reading • StringReader - reads from a string • InputStreamReader - wraps in input stream • InputStream - based on bytes • BufferedInputStream - wraps an input stream • FileInputStream - opens files for reading • ObjectInputStream - read whole objects • ByteArrayInputStream - read from a byte array
Output • Writer • FileWriter - create / append to files • StringWriter - create strings • BufferedWriter - wrapper for a writer • PrintWriter - provides println() • OutputStreamWriter - write to a stream • OutputStream • FileOutputStream - create / append to files • ByteArrayOutputStream - create a byte array • BufferedOutputStream - wraper for a stream • PrintStream - provides println() • ObjectOutputStream - write whole objects
Making your own • javap java.io.Reader | grep abstract • int read(char[], int, int); • void close(); • javap java.io.InputStream | grep abstract • int read(); • javap java.io.Writer | grep abstract • void write(char[], int, int) • void flush(); • void close(); • javap javai.io.OutputStream | grep abstract • void write(int);
import java.io.OutputStream; import java.io.PrintStream; public class NullOutputStream extends OutputStream { public void write(int a) {} public static void main(String[] args) { NullOutputStream nout = new NullOutputStream(); PrintStream ps = new PrintStream(nout); ps.println("Hello, world."); } } NullOutputStream
import java.io.OutputStream; import java.io.PrintStream; public class CapOutputStream extends OutputStream { public void write(int a) { char c = (char)a; System.out.write(Character.toUpperCase(c)); } public static void main(String[] args) { CapOutputStream cout = new CapOutputStream(); PrintStream ps = new PrintStream(cout); ps.println("Hello, world."); } } CapOutputStream