Chapter 15: Input and Output F Stream Classes F Processing External Files F Data Streams F Print Streams F Buffered Streams F Use JFileChooser F Text Input.

Slides:



Advertisements
Similar presentations
A Guide to Advanced Java Faculty:Nguyen Ngoc Tu. 2 Operating System Application #1 Application #2 Java Virtual Machine #1 Local Memory Shared Memory Threads.
Advertisements

1 Streams and Input/Output Files Part 3. 2 Handling Primitive Data Types The basic input and output streams provide read/write methods that can be used.
Chapter 19 Binary I/O.
Lecture 15: I/O and Parsing
The Package Statement Group related interfaces and classes together Purpose: encapsulation and reduces name conflicts –private package classes not visible.
Java File I/O. File I/O is important! Being able to write and read from files is necessary and is also one common practice of a programmer. Examples include.
Streams Dwight Deugo Nesa Matic Portions of the notes for this lecture include excerpts from.
Files CSC 171 FALL 2001 LECTURE 18. History Operating Systems Operating systems (originally called monitors or supervisors) had been developed in the.
Geoff Holmes Overview IO Zoo Stream I/O File I/O Buffering Random-Access Text Streams Examples Serialization Java IO – programs that start with import.
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 12  File Input and Output Stream Classes Text Input and Output.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved L07 (Chapter 18) Binary I/O.
File I/O in Java CS 311, Winter File Basics Recall that a file is block structured. What does this mean? What happens when an application opens.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 18 Binary I/O.
Chapter 91 Streams and File I/O Chapter 9. 2 Reminders Project 6 released: due Nov 10:30 pm Project 4 regrades due by midnight tonight Discussion.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved L08 (Chapter 18) Binary I/O.
Chapter 91 Streams and File I/O CS-180 Recitation-03/07/2008.
Chapter 12 File Input and Output. Topics Stream Classes Files Text Input and Output JFileChooser for GUI programs Binary files.
CS203 Programming with Data Structures Input and Output California State University, Los Angeles.
Introduction to Java Y.Daniel Liang
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Chapter 19 Binary I/O.
Input / Output Chapter 13.  We use files all the time  Programs are files  Documents are files  We want them to be “permanent”  To last beyond execution.
Liang,Introduction to Java Programming,revised by Dai-kaiyu 1 Chapter 16 Simple Input and Output 与人玫瑰,手有余香.
Chapter 17 Input and Output F Stream Classes F Processing External Files F Data Streams F Print Streams F Buffered Streams  Use JFileChooser F Text Input.
Input and Output F Stream Classes F Processing External Files F Data Streams F Print Streams F Buffered Streams F Text Input and Output on the Console.
Streams Reading: 2 nd Ed: , rd Ed: 11.1, 19.1, 19.4
Java How to Program, 8/e © by Pearson Education, Inc. All Rights Reserved.
OOP with Java, David J. Barnes Input-Output1 A complex issue in programming language design. The interface to the outside world. –Differences must be accommodated.
Copyright © Curt Hill Java I/O Flexibility and Layering.
JAVA I/O © EnhanceEdu, IIIT Hyderabad. Contents 3/29/2010EnhanceEdu, IIIT - H 2  Command Line I/O  File Class  Streams  Byte Streams [Low level and.
Java Programming: Advanced Topics 1 Input/Output and Serialization Chapter 3.
Input/output Input in java is stream based.A stream represents sequence of bytes or characters. Stream provides an abstract view of I/O. Stream can be.
L5: Input & Output COMP206, Geoff Holmes and Bernhard Pfahringer.
Two Ways to Store Data in a File  Text format  Binary format.
Java Input/Output. Reading standard input Surprisingly complicated (GUI focus) Old-fashioned way: BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
Introduction to Computation and Problem Solving Class 29: Introduction to Streams Prof. Steven R. Lerman and Dr. V. Judson Harward.
A stream is a sequence of data. A stream is a flowing sequence of characters.
Streams and File I/O Chapter 9. Outline Overview of Streams and File I/O Text-File I/O Using the File Class Basic Binary-File I/O Object I/O with Object.
Copyright(c) Systems and Computer Engineering, Carleton Univeristy, * Object-Oriented Software Development Unit 13 I/O Stream Hierarchy Case.
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 19 Binary I/O.
1 Chapter 19 Binary I/O. 2 Motivations F Data stored in a text file – is represented in human-readable form –Text file –Readable –Java source programs.
Chapter 15: Input and Output F Stream Classes F Processing External Files F Data Streams F Print Streams F Buffered Streams F Parsing Text Files F Random.
Chapter 15: Input and Output
Company Input/Output Stream –. Input/Output Stream Data Program Input Stream Output Stream.
I/O Basics 26 January Aside from print( ) and println( ), none of the I/O methods have been used significantly. The reason is simple: most real.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Files in Java 1.
1 Chapter 16 Simple Input and Output. 2 Objectives F To discover file properties, delete and rename files using the File class (§16.2). F To understand.
1 Putting Streams to use. 2 Stream Zoo C++ gives you istream, ostream, iostream, ifstream, ofstream, fstream, wistream, wifstream, istrsteam… (18) Java.
Java Programming: Advanced Topics 1 Input/Output and Serialization.
Java Programming, Second Edition Chapter Sixteen File Input and Output.
1 Input-Output A complex issue in programming language design. The interface to the outside world. –Differences must be accommodated as transparently as.
Java IO Exploring the java.io package and living to talk about it.
Chapter 10: I/O Streams Input Streams Output Streams
The Java IO System Different kinds of IO Different kinds of operations
Fundamental of Java Programming
IO in java.
IO in java.
Chapter 17 Input and Output
Chapter 17 Binary I/O.
Object Writing in files
OBJECT ORIENTED PROGRAMMING II LECTURE 21_1 GEORGE KOUTSOGIANNAKIS
I/O Basics.
Chapter 17 Binary I/O 1.
File.
Streams and File I/O Chapter 9 Chapter 9.
Chapter 17 Binary I/O Dr. Clincy - Lecture.
Chapter 16 Simple Input and Output
OBJECT ORIENTED PROGRAMMING II LECTURE 11_1 GEORGE KOUTSOGIANNAKIS
The Package Statement Group related interfaces and classes together
David Davenport Spring 2005
Presentation transcript:

Chapter 15: Input and Output F Stream Classes F Processing External Files F Data Streams F Print Streams F Buffered Streams F Use JFileChooser F Text Input and Output on the Console F Random Access Files F Parsing Text Files

Streams A stream is an abstraction of the continuous one- way flow of data. A stream is an abstraction of the continuous one- way flow of data.

Stream Classes The stream classes can be categorized into two types: byte streams and character streams. 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 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. The subclasses of InputStream/OutputStream are analogous to the subclasses of Reader/Writer.

Byte Stream Classes

Character Stream Classes

InputStream abstract int read() throws IOException abstract int read() throws IOException  Return a byte [0..255] or –1 (EOF) int read(byte b[]) throws IOException int read(byte b[]) throws IOException  Read bytes into array and return b.length void close() throws IOException void close() throws IOException Int available() throws IOException Int available() throws IOException  Return the number of bytes to be read long skip(long n) throws IOException long skip(long n) throws IOException  Skip over n bytes

Reader The Reader class is similar to the InputStream class. The methods in Reader are subject to character interpretation. abstract int read() throws IOException int read(char b[]) throws IOException void close() throws IOException long skip(long n) throws IOException Note that if no data are available, it blocks the thread from executing next statement.

OutputStream abstract void write(int b) throws IOException abstract void write(int b) throws IOException void write(byte[] b) throws IOException void write(byte[] b) throws IOException void close() throws IOException void close() throws IOException void flush() throws IOException void flush() throws IOException

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

Processing External Files You must use file streams to read from or write to a disk file. You must use file streams to read from or write to a disk file. You can use FileInputStream or FileOutputStream for byte streams, and you can use FileReader or FileWriter for character streams. You can use FileInputStream or FileOutputStream for byte streams, and you can use FileReader or FileWriter for character streams.

File I/O Stream Constructors Constructing instances of FileInputStream, FileOutputStream, FileReader, and FileWriter from file 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");

Example 15.1 Processing 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.)

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

DataInputStream Methods int readByte() throws IOException int readByte() throws IOException int readShort() throws IOException int readShort() throws IOException int readInt() throws IOException int readInt() throws IOException int readLong() throws IOException int readLong() throws IOException float readFloat() throws IOException float readFloat() throws IOException double readDouble() throws IOException double readDouble() throws IOException char readChar() throws IOException char readChar() throws IOException boolean readBoolean() throws IOException boolean readBoolean() throws IOException String readUTF() throws IOException String readUTF() throws IOException

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 IOException void writeBoolean(boolean b) throws IOException void writeBytes(String l) throws IOException void writeBytes(String l) throws IOException void writeChars(String l) throws IOException void writeChars(String l) throws IOException void writeUTF(String l) throws IOException void writeUTF(String l) throws IOException

Data I/O Stream Constructors DataInputStream infile = new DataInputStream(new FileInputStream("in.dat")); DataInputStream infile = new DataInputStream(new FileInputStream("in.dat")); Creates an input file for in.dat. DataOutputStream outfile = new DataOutputStream(new FileOutputStream("out.dat")); DataOutputStream outfile = new DataOutputStream(new FileOutputStream("out.dat")); Creates an output file for out.dat.

Example 15.2 Using Data Streams TestDataStreams Run Click 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.)

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

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 autoFlush) PrintWriter(OutputStream out, boolean autoFlush)

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)

Example 15.3 Using 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.)

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

Buffered Stream Constructors BufferedInputStream (InputStream in) BufferedInputStream (InputStream in)  Default buffer size = 512 bytes BufferedInputStream (InputStream in, int bufferSize) BufferedInputStream (InputStream in, int bufferSize) BufferedOutputStream (OutputStream in) BufferedOutputStream (OutputStream in) BufferedOutputStream (OutputStream in, int bufferSize) BufferedOutputStream (OutputStream in, int bufferSize) BufferedReader(Reader in) BufferedReader(Reader in)  Default buffer size = 512 chars 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)

Example 15.4 Displaying a File in a Text Area Objective: View a file in a text area. The user enters a filename in a text field and clicks the View button; the file is then displayed in a text area. Objective: View a file in a text area. The user enters a filename in a text field and clicks the View button; the file is then displayed in a text area. ViewFile Run

JFileChooser public JFileChooser() public JFileChooser() public JFileChooser(String currentDirPath) public JFileChooser(String currentDirPath) public JFileChooser(File currentDirectory) public JFileChooser(File currentDirectory) File selectedFile File selectedFile File[] selectedFiles File[] selectedFiles boolean multiSelectionEnabled boolean multiSelectionEnabled File currentDirectory File currentDirectory public int showOpenDialog(Component pnt) public int showOpenDialog(Component pnt)

Example 15.5 Using File Dialogs Objective: Create a simple notepad using JFileChooser to open and save files. The notepad enables the user to open an existing file, edit the file, and save the note into the current file or to a specified file. You can display and edit the file in a text area. Objective: Create a simple notepad using JFileChooser to open and save files. The notepad enables the user to open an existing file, edit the file, and save the note into the current file or to a specified file. You can display and edit the file in a text area. RunFileDialogDemo Note: You cannot run this from the CD; the program writes to disk.

Text Input and Output on the Consoles There are two types of interactive I/O. Text interactive I/O: simple input from the keyboard and simple output in a pure text form. Text interactive I/O: simple input from the keyboard and simple output in a pure text form. Graphical interactive I/O: input from various input devices and output to a graphical environment on frames and applets. Graphical interactive I/O: input from various input devices and output to a graphical environment on frames and applets.

Console Output/Input To perform console output, you can use any of the methods for PrintStream in System.out. To perform console output, you can use any of the methods for PrintStream in System.out. Keyboard input is not directly supported in Java. See MyInput.Java Keyboard input is not directly supported in Java. See MyInput.Java  call readString() to get a string  parse the string to byte, short, int, float, … MyInput

Object Streams Object streams enable you to perform input and output at the object level. To enable an object to be read or write, the object's defining class has to implement the java.io.Serializable interface or the java.io.Externalizable interface.

The Serializable Interface The Serializable interface is a marker interface. It has no methods, so you don't need to add additional code in your class that implements Serializable. Implementing this interface enables the Java serialization mechanism to automate the process of storing the objects and arrays.

The Object Streams Use the ObjectOutputStream class for storing/writing objects (object serialization) and Use the ObjectOutputStream class for storing/writing objects (object serialization) and Use the ObjectInputStream class for restoring/reading objects (object deserialization). Use the ObjectInputStream class for restoring/reading objects (object deserialization). These two classes are built upon several other classes. (see next page) These two classes are built upon several other classes. (see next page) Note that all JavaBeans components implement Serializable. Note that all JavaBeans components implement Serializable.

The ObjectOutput and ObjectInput Streams

Example 15.6 Testing Object Streams Objective: Stores objects of MessagePanel and Date, and Restores these objects. Objective: Stores objects of MessagePanel and Date, and Restores these objects. RunObjectStreamDemo Note: You cannot run this from the CD; the program writes to disk.

Random Access Files Java provides the RandomAccessFile class to allow a file to be read and updated at the same time. Java provides the RandomAccessFile class to allow a file to be read and updated at the same time. The RandomAccessFile class extends Object and implements DataInput and DataOutput interfaces. The RandomAccessFile class extends Object and implements DataInput and DataOutput interfaces.

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

RandomAccessFile Methods, cont. void seek(long pos) throws IOException; void seek(long pos) throws IOException; Sets the offset from the beginning of the RandomAccessFile stream to where the next read or write occurs. long getFilePointer() IOException; long getFilePointer() IOException; Returns the current offset, in bytes, from the beginning of the file to where the next read or write occurs.

RandomAccessFile Methods, cont. long length()IOException long length()IOException Returns the length of the file. final void writeChar(int v) throws IOException final void writeChar(int v) throws IOException Writes a character to the file as a two-byte Unicode, with the high byte written first. final void writeChars(String s) throws IOException final void writeChars(String s) throws IOException Writes a string to the file as a sequence of characters.

RandomAccessFile Constructor RandomAccessFile raf = new RandomAccessFile("test.dat", "rw"); //allows read and write RandomAccessFile raf = new RandomAccessFile("test.dat", "r"); //read only

Example Using Random Access Files Objective: Create a program that registers students and displays student information. Objective: Create a program that registers students and displays student information. Run TestRandomAccessFile Note: You cannot run this from the CD; the program writes to disk.

Parsing Text Files (Optional) The StreamTokenizer class lets you take an input stream and parse it into words, which are known as tokens. The StreamTokenizer class lets you take an input stream and parse it into words, which are known as tokens. The tokens are read one at a time. The tokens are read one at a time. The following is the StreamTokenizer constructor: The following is the StreamTokenizer constructor: StreamTokenizer st = StreamTokenizer(Reader is)

StreamTokenizer Constants TT_WORD TT_WORD The token is a word. TT_NUMBER TT_NUMBER The token is a number. TT_EOL TT_EOL The end of the line has been read. TT_EOF TT_EOF The end of the file has been read.

StreamTokenizer Variables int ttype int ttype Contains the current token type, which matches one of the constants listed on the preceding slide. double nval double nval Contains the value of the current token if that token is a number. String sval String sval Contains a string that gives the characters of the current token if that token is a word.

StreamTokenizer Methods public int nextToken() throws IOException public int nextToken() throws IOException  Parses the next token from the input stream of this StreamTokenizer.  The type of the next token is returned in the ttype field. If ttype == TT_WORD, the token is stored in sval; if ttype == TT_NUMBER, the token is stored in nval.

Example 15.8 Using StreamTokenizer RunParsingTextFile 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.)