chapter 15: input and output

38
Chapter 15: Input and Output Stream Classes Stream Classes Processing External Files Processing External Files Data Streams Data Streams Print Streams Print Streams Buffered Streams Buffered Streams Parsing Text Files Parsing Text Files Random Access Files Random Access Files Interactive Input and Output Interactive Input and Output

Upload: cecily-mason

Post on 08-Jan-2018

235 views

Category:

Documents


0 download

DESCRIPTION

Stream Classes A stream is an abstraction of the continuous one-way flow of data. The stream classes can be categorized into two types: byte streams and character streams. The InputStream/OutputStream class is the root of all byte stream classes, and the Reader/ Writer class is the root of all character stream classes. The subclasses of InputStream/ OutputStream are analogous to the subclasses of Reader/Writer.

TRANSCRIPT

Page 1: Chapter 15: Input and Output

Chapter 15: Input and Output Stream ClassesStream Classes Processing External FilesProcessing External Files Data StreamsData Streams Print StreamsPrint Streams Buffered StreamsBuffered Streams Parsing Text FilesParsing Text Files Random Access FilesRandom Access Files Interactive Input and OutputInteractive Input and Output

Page 2: Chapter 15: Input and Output

Stream Classes A A streamstream is an abstraction of the continuous one- is an abstraction of the continuous one-

way flow of data. way flow of data. The stream classes can be categorized into two The stream classes can be categorized into two

types: types: byte streamsbyte streams and and character streamscharacter streams.. The The InputStream/OutputStreamInputStream/OutputStream class is the class is the

root of all byte stream classes, and the root of all byte stream classes, and the Reader/Reader/WriterWriter class is the root of all character stream class is the root of all character streamclasses. classes.

The subclasses of The subclasses of InputStream/InputStream/OutputStreamOutputStream are analogous to the are analogous to thesubclasses of subclasses of Reader/WriterReader/Writer..

Page 3: Chapter 15: Input and Output

Byte Stream Classes

Page 4: Chapter 15: Input and Output

Character Stream Classes

Page 5: Chapter 15: Input and Output

InputStream abstract int read() throws IOExceptionabstract int read() throws IOException int read(byte b[]) throws IOExceptionint read(byte b[]) throws IOException void close() throws IOExceptionvoid close() throws IOException void available() throws IOExceptionvoid available() throws IOException void skip() throws IOExceptionvoid skip() throws IOException

Page 6: Chapter 15: Input and Output

Reader

The The ReaderReader class is similar to the InputStream class is similar to the InputStream class. The methods in class. The methods in ReaderReader are subject to are subject to character interpretation.character interpretation.

abstract int read() throws IOException

int read(char b[]) throws IOException

void close() throws IOException

void skip() throws IOException

Page 7: Chapter 15: Input and Output

OutputStream abstract void write(int b) throws IOExceptionabstract void write(int b) throws IOException

void write(byte[] b) throws IOExceptionvoid write(byte[] b) throws IOException void close() throws IOExceptionvoid close() throws IOException void flush() throws IOExceptionvoid flush() throws IOException

Page 8: Chapter 15: Input and Output

Writer abstract void write(int b) throws IOExceptionabstract void write(int b) throws IOException void write(char[] b) throws IOExceptionvoid write(char[] b) throws IOException void close() throws IOExceptionvoid close() throws IOException void flush() throws IOExceptionvoid flush() throws IOException

Page 9: Chapter 15: Input and Output

Processing External Files You must use file streams to read from You must use file streams to read from or writeor writeto a disk file. to a disk file. Use Use FileInputStreamFileInputStream or or FileOutputStreamFileOutputStream for byte streams, for byte streams, Use Use FileReaderFileReader or or FileWriterFileWriter for for character streams. character streams.

Page 10: Chapter 15: Input and Output

File I/O Stream Constructors Constructing instances of Constructing instances of FileInputStreamFileInputStream, , FileOutputStreamFileOutputStream, , FileReaderFileReader, and , and FileWriter FileWriter from file from file names:names:

FileInputStream infile = new FileInputStream("in.dat");

FileOutputStream outfile = new FileOutputStream("out.dat");

FileReader infile = new FileReader("in.dat");

FileWriter outfile = new FileWriter("out.dat");

Page 11: Chapter 15: Input and Output

Example 15.1Processing External Files

CopyFileUsingByteStream

Run

Click the Run button to access the DOS prompt; then type java CopyFileUsingByteStream ButtonDemo.java t.java and press Enter. (If working from the CD, add a path to the hard disk or floppy disk drive for t.java.)

Page 12: Chapter 15: Input and Output

Data Streams The data streams (The data streams (DataInputStreamDataInputStream and and DataOutputStreamDataOutputStream) read and write Java primitive ) read and write Java primitive types in a machine-independent fashion, which types in a machine-independent fashion, which enables you to write a data file in one machine enables you to write a data file in one machine and read it on another machine that has a and read it on another machine that has a different operating system or file structure. different operating system or file structure.

Page 13: Chapter 15: Input and Output

DataInputStream Methods int readByte() throws IOExceptionint readByte() throws IOException int readShort() throws IOExceptionint readShort() throws IOException int readInt() throws IOExceptionint readInt() throws IOException int readLong() throws IOExceptionint readLong() throws IOException float readFloat() throws IOExceptionfloat readFloat() throws IOException double readDouble() throws IOExceptiondouble readDouble() throws IOException char readChar() throws IOExceptionchar readChar() throws IOException boolean readBoolean() throwsboolean readBoolean() throws

IOExceptionIOException String readUTF() throws IOExceptionString readUTF() throws IOException

Page 14: Chapter 15: Input and Output

DataOutputStream Methods void writeByte(byte b) throws IOException void writeByte(byte b) throws IOException void writeShort(short s) throws IOException void writeShort(short s) throws IOException void writeInt(int i) throws IOException void writeInt(int i) throws IOException void writeLong(long l) throws IOException void writeLong(long l) throws IOException void writeFloat(float f) throws IOException void writeFloat(float f) throws IOException void writeDouble(double d) throws IOException void writeDouble(double d) throws IOException void writeChar(char c) throws IOException void writeChar(char c) throws IOException void writeBoolean(boolean b) throws IOExceptionvoid writeBoolean(boolean b) throws IOException void writeBytes(String l) throws IOExceptionvoid writeBytes(String l) throws IOException void writeChars(String l) throws IOExceptionvoid writeChars(String l) throws IOException void writeUTF(String l) throws IOException void writeUTF(String l) throws IOException

Page 15: Chapter 15: Input and Output

Data I/O Stream Constructors Creates an input file for in.dat.Creates an input file for in.dat. DataInputStream infile = newDataInputStream infile = new

DataInputStream(new FileInputStream("in.dat"));DataInputStream(new FileInputStream("in.dat"));

Creates an output file for out.dat:Creates an output file for out.dat: DataOutputStream outfile = newDataOutputStream outfile = new

DataOutputStream(new FileOutputStream("out.dat"));DataOutputStream(new FileOutputStream("out.dat"));

Page 16: Chapter 15: Input and Output

Example 15.2Using Data Streams

TestDataStreams

RunClick the Run button to access the DOS prompt; then type java TestDataStreams and press Enter. (Note: You cannot run this from the CD; the program writes to disk.)

Page 17: Chapter 15: Input and Output

Print Streams The data output stream outputs a binary The data output stream outputs a binary representation of data, so you cannot view its representation of data, so you cannot view its contents as text. contents as text. In Java, you can use print streams to output In Java, you can use print streams to output data into files. data into files. These files can be viewed as text.These files can be viewed as text.

The The PrintStreamPrintStream and and PrintWriterPrintWriter classes classes provide this functionality.provide this functionality.

Page 18: Chapter 15: Input and Output

PrintWriter Constructors PrintWriter(Writer out)PrintWriter(Writer out) PrintWriter(Writer out, boolean autoFlush)PrintWriter(Writer out, boolean autoFlush) PrintWriter(OutputStream out)PrintWriter(OutputStream out) PrintWriter(OutputStream out, boolean PrintWriter(OutputStream out, boolean

autoFlush)autoFlush)

Page 19: Chapter 15: Input and Output

PrintWriter Methods void print(Object o)void print(Object o) void print(String s)void print(String s) void println(String s)void println(String s) void print(char c)void print(char c) void print(char[] cArray)void print(char[] cArray) void print(int i)void print(int i) void print(long l)void print(long l) void print(float f)void print(float f) void print(double d)void print(double d) void print(boolean b)void print(boolean b)

Page 20: Chapter 15: Input and Output

Example 15.3Using Print Streams

Run

TestPrintWriters

Click the Run button to access the DOS prompt; then type java TestPrintWriters t.dat and press Enter. (Note: You cannot run this from the CD; the program writes to disk.)

Page 21: Chapter 15: Input and Output

Buffered Streams Java introduces buffered streams that speed Java introduces buffered streams that speed up input and output by reducing the number of up input and output by reducing the number of reads and writes. reads and writes. In the case of input, a bunch of data is read all In the case of input, a bunch of data is read all at once instead of one byte at a time. at once instead of one byte at a time. In the case of output, data are first cached into In the case of output, data are first cached into a buffer, then written all together to the file. a buffer, then written all together to the file.

Using buffered streams is highly Using buffered streams is highly recommended.recommended.

Page 22: Chapter 15: Input and Output

Buffered Stream Constructors BufferedInputStream (InputStream in) BufferedInputStream (InputStream in) BufferedInputStream (InputStream in, int bufferSize) BufferedInputStream (InputStream in, int bufferSize) BufferedOutputStream (OutputStream in) BufferedOutputStream (OutputStream in) BufferedOutputStream (OutputStream in, int BufferedOutputStream (OutputStream in, int

bufferSize)bufferSize) BufferedReader(Reader in)BufferedReader(Reader in) BufferedReader(Reader in, int bufferSize)BufferedReader(Reader in, int bufferSize) BufferedWriter(Writer out)BufferedWriter(Writer out) BufferedWriter(Writer out, int bufferSize)BufferedWriter(Writer out, int bufferSize)

Page 23: Chapter 15: Input and Output

Example 15.4Displaying a File in a Text Area

Objective: View a file in a text area. The user Objective: View a file in a text area. The user enters a filename in a text field and clicks the enters a filename in a text field and clicks the View button; the file is then displayed in a View button; the file is then displayed in a text area.text area.

ViewFile

Run

Page 24: Chapter 15: Input and Output

Parsing Text Files The The StreamTokenizerStreamTokenizer class lets you take class lets you take an input stream and parse it into words, an input stream and parse it into words, which are known as which are known as tokenstokens. . The tokens are read one at a time.The tokens are read one at a time. The following is the The following is the StreamTokenizerStreamTokenizer constructor:constructor:

StreamTokenizer st = StreamTokenizer st = StreamTokenizer(Reader is) StreamTokenizer(Reader is)

Page 25: Chapter 15: Input and Output

StreamTokenizer Constants TT_WORDTT_WORD

The token is a word.The token is a word. TT_NUMBERTT_NUMBER

The token is a number.The token is a number. TT_EOLTT_EOL

The end of the line has been read.The end of the line has been read. TT_EOFTT_EOF

The end of the file has been read.The end of the file has been read.

Page 26: Chapter 15: Input and Output

StreamTokenizer Variables int ttypeint ttype

Contains the current token type, which matches Contains the current token type, which matches one of the constants listed on the preceding slide.one of the constants listed on the preceding slide.

double nvaldouble nvalContains the value of the current token if that Contains the value of the current token if that token is a number.token is a number.

String svalString svalContains a string that gives theContains a string that gives thecharacters of the current token if thatcharacters of the current token if thattoken is a word. token is a word.

Page 27: Chapter 15: Input and Output

StreamTokenizer Methods public int nextToken() throws IOExceptionpublic int nextToken() throws IOException

Parses the next token from the input stream of this Parses the next token from the input stream of this StreamTokenizerStreamTokenizer.. The type of the next token is returned in the The type of the next token is returned in the ttypettypefield. field.

If If ttype == TT_WORDttype == TT_WORD, the token is stored, the token is storedin in svalsval; ;

if if ttype == TT_NUMBERttype == TT_NUMBER, the, thetoken is stored in token is stored in nvalnval..

Page 28: Chapter 15: Input and Output

Example 15.5Using StreamTokenizer

Run

ParsingTextFile

Click the Run button to access the DOS prompt; then type java ParsingTextFile and press Enter. (Note: You cannot run this from the CD; the program writes to disk.)

Page 29: Chapter 15: Input and Output

Random Access Files Java provides the Java provides the RandomAccessFileRandomAccessFile class to class to

allow a file to be read and updated at the allow a file to be read and updated at the same time. same time.

The The RandomAccessFileRandomAccessFile class extends class extends ObjectObject and implements and implements DataInputDataInput and and DataOutputDataOutput interfaces.interfaces.

Page 30: Chapter 15: Input and Output

RandomAccessFile Methods Many methods in Many methods in RandomAccessFileRandomAccessFile are the same as those are the same as those in in DataInputStreamDataInputStream and and DataOutputStreamDataOutputStream. . For example, For example, readInt()readInt(), , readLong()readLong(), , writeDouble()writeDouble(), , readLine()readLine(), , writeInt()writeInt(), and , and writeLong()writeLong() can be used in data input stream or can be used in data input stream or data output stream as well as in data output stream as well as in RandomAccessFileRandomAccessFile streams. streams.

Page 31: Chapter 15: Input and Output

RandomAccessFile Methods, cont.

void seek(long pos) throws IOException;void seek(long pos) throws IOException;

Sets the offset from the beginning of the Sets the offset from the beginning of the RandomAccessFileRandomAccessFile stream to where the next stream to where the next readreador write occurs.or write occurs.

long getFilePointer() IOException;long getFilePointer() IOException;

Returns the current offset, in bytes, from theReturns the current offset, in bytes, from thebeginning of the file to where the next readbeginning of the file to where the next reador write occurs.or write occurs.

Page 32: Chapter 15: Input and Output

RandomAccessFile Methods, cont.

long length() throws IOExceptionlong length() throws IOExceptionReturns the length of the file.Returns the length of the file.

final void writeChar(int v) throws IOExceptionfinal void writeChar(int v) throws IOExceptionWrites a character to the file as a two-byte Writes a character to the file as a two-byte Unicode, with the high byte written first.Unicode, with the high byte written first.

final void writeChars(String s)final void writeChars(String s)throws IOExceptionthrows IOExceptionWrites a string to the file as a sequence ofWrites a string to the file as a sequence ofcharacters.characters.

Page 33: Chapter 15: Input and Output

RandomAccessFile ConstructorRandomAccessFile raf =RandomAccessFile raf =

new RandomAccessFile("test.dat", "rw"); //allows new RandomAccessFile("test.dat", "rw"); //allows read and writeread and write

RandomAccessFile raf =RandomAccessFile raf =new RandomAccessFile("test.dat", "r"); //read new RandomAccessFile("test.dat", "r"); //read onlyonly

Page 34: Chapter 15: Input and Output

Example 15.6Using Random Access Files

Objective: Create a program that registers Objective: Create a program that registers students and displays student information. students and displays student information.

Run

TestRandomAccessFile

Note: You cannot run this from the CD; the programwrites to disk.

Page 35: Chapter 15: Input and Output

Example 15.7File Dialog Demo Objective: Create a simple notepad using Objective: Create a simple notepad using

JFileChooserJFileChooser to open and save files. The to open and save files. The notepad enables the user to open an existing notepad enables the user to open an existing file, edit the file, and save the note into the file, edit the file, and save the note into the current file or to a specified file. You can current file or to a specified file. You can display and edit the file in a text area.display and edit the file in a text area.

RunFileDialogDemoNote: You cannot run this from the CD; the programwrites to disk.

Page 36: Chapter 15: Input and Output

Interactive Input and OutputThere are two types of interactive I/O. There are two types of interactive I/O. One involves simple input from the One involves simple input from the keyboard and simple output in a pure keyboard and simple output in a pure text form. text form. The other involves input from various The other involves input from various input devices and output to a graphical input devices and output to a graphical environment on frames and applets. environment on frames and applets. The former is referred to as The former is referred to as simple simple interactive I/Ointeractive I/O, and the latter is known as , and the latter is known as graphical interactive I/Ographical interactive I/O..

Page 37: Chapter 15: Input and Output

Keyboard Input You need to use You need to use BufferedReaderBufferedReader and and StringTokenizerStringTokenizer to input from the keyboard. to input from the keyboard. BufferedReaderBufferedReader takes the input of the takes the input of the character format of all of the primitive types, character format of all of the primitive types, such as such as integerinteger, , doubledouble, , stringstring, and so on., and so on. The The StringTokenizerStringTokenizer class takes in a string, class takes in a string, such as such as "Welcome to Java""Welcome to Java", and breaks it into, and breaks it intolittle pieces, which are known as little pieces, which are known as tokenstokens. .

Page 38: Chapter 15: Input and Output

readInt()

Read one integer from the command line:Read one integer from the command line:static private BufferedReader br = static private BufferedReader br = new BufferedReader(newnew BufferedReader(new InputStreamReader(System.in));InputStreamReader(System.in));

static StringTokenizer stok;static StringTokenizer stok;String str = br.readLine();String str = br.readLine();stok = new StringTokenizer(str);stok = new StringTokenizer(str);int i = Integer.parseInt(stok.nextToken());int i = Integer.parseInt(stok.nextToken());

MyInput