![Page 1: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/1.jpg)
Java Programming Fourth Edition
Chapter 16 File Input and Output
![Page 2: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/2.jpg)
Java Programming, Fourth Edition 2
Objectives
• Understand computer files • Use the File class • Understand data file organization and streams • Use streams • Write to and read from a file
![Page 3: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/3.jpg)
Java Programming, Fourth Edition 3
Objectives (continued)
• Write formatted file data • Read formatted file data • Use a variable filename • Create and use random access files • Write records to a random access file
![Page 4: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/4.jpg)
Java Programming, Fourth Edition 4
Objectives (continued)
• Read records from a random access file • Read and write objects to and from files
![Page 5: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/5.jpg)
Java Programming, Fourth Edition 5
Understanding Computer Files
• Temporary storage – Computer memory or random access memory
(RAM) – Volatile
• Permanent storage – Not lost when computer loses power – Nonvolatile
• Computer file – Collection of information stored on nonvolatile device
in computer system
![Page 6: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/6.jpg)
Java Programming, Fourth Edition 6
Understanding Computer Files (continued)
• Permanent storage devices – Hard disks – Floppy disks – Zip disks – USB drives – Reels or cassettes of magnetic tape – Compact discs
• Data files – Contain facts and figures
![Page 7: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/7.jpg)
Java Programming, Fourth Edition 7
Understanding Computer Files (continued)
• Program files or application files – Store software instructions
• Root directory • Folders or directories • Path
– Complete list of disk drive plus hierarchy of directories in which file resides
![Page 8: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/8.jpg)
Java Programming, Fourth Edition 8
Understanding Computer Files (continued)
• Work with stored files in application – Determine whether and where file exists – Open file – Read data from file – Write information to file – Close file
![Page 9: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/9.jpg)
Java Programming, Fourth Edition 9
Using the File Class
• File class – Gather file information – java.io package File someData = new File("Data.txt");
File someData = new File("C:\\Java\\Chapter.16\\Data.txt");
![Page 10: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/10.jpg)
Java Programming, Fourth Edition 10
Selected File Class Methods
![Page 11: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/11.jpg)
Java Programming, Fourth Edition 11
The FileDemo Class
![Page 12: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/12.jpg)
Java Programming, Fourth Edition 12
Understanding Data File Organization and Streams
• Retain data for any significant amount of time – Save on permanent, secondary storage device
• Businesses store data in hierarchy – Character – Field – Record – Files
• Sequential access file – Each record stored in order based on value in some
field
![Page 13: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/13.jpg)
Java Programming, Fourth Edition 13
Data Hierarchy
![Page 14: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/14.jpg)
Java Programming, Fourth Edition 14
Understanding Data File Organization and Streams (continued) • Open file
– Create object – Associate stream of bytes with it
• Close file – Make it no longer available to application – Should always close every file you open
• Stream – Bytes flowing into program from input device – Bytes flow out of application to output device – Most streams flow in only one direction
![Page 15: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/15.jpg)
Java Programming, Fourth Edition 15
File Streams
![Page 16: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/16.jpg)
Java Programming, Fourth Edition 16
Using Streams
• InputStream and OutputStream – Abstract classes that contain methods for performing
input and output • System.out
– PrintStream object – Defined in System class
• System.err – Usually reserved for error messages
![Page 17: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/17.jpg)
Java Programming, Fourth Edition 17
Description of Selected Classes Used for Input and Output
![Page 18: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/18.jpg)
Java Programming, Fourth Edition 18
Using Streams (continued)
• FileWriter class – Convenience class for writing character files
• Convenience class – Designed to make programmer’s job easier
• System.in – BufferedInputStream object – Captures keyboard input
• Buffer – Memory location used to hold data temporarily
![Page 19: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/19.jpg)
Java Programming, Fourth Edition 19
Using Streams (continued)
• BufferedInputStream class – Allows keyboard data to be entered at command line – Held until user presses Enter
![Page 20: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/20.jpg)
Java Programming, Fourth Edition 20
Writing to and Reading from a File
• Assign file to InputStream or OutputStream – Construct FileOutputStream object – Assign it to OutputStream
• Associate File object with output stream – Pass filename to constructor of FileOutputStream class
– Create File then pass File object to constructor of FileOutputStream class
• FileOutputStream constructor – Might throw FileNotFoundException
![Page 21: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/21.jpg)
Java Programming, Fourth Edition 21
Reading from a File
• Read data from file – Create File object and assign it to input stream
![Page 22: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/22.jpg)
Java Programming, Fourth Edition 22
Writing Formatted File Data
• DataOutputStream objects – Write binary data to OutputStream – Data not readable in text editor
• Not stored as characters – Formatted correctly for its type
• DataOutput interface – Implemented by DataOutputStream
![Page 23: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/23.jpg)
Java Programming, Fourth Edition 23
Writing Formatted File Data (continued)
• Create DataOutputStream – Assign FileOutputStream object to it – Data stored in file – Chaining stream objects out = new DataOutputStream(new FileOutputStream ("someFile"));
![Page 24: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/24.jpg)
Java Programming, Fourth Edition 24
Reading Formatted File Data
• DataInputStream objects – Read binary data from InputStream
• DataInput interface – Implemented by DataInputStream – Each read method correctly reads type of data
indicated by name • Create DataInputStream object to read from file
– Use chaining technique in = new DataInputStream(FileInputStream("someFile"));
![Page 25: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/25.jpg)
Java Programming, Fourth Edition 25
Reading Formatted File Data (continued)
• Detect end of file – Check for return value of –1 from read() method – Catch EOFException
![Page 26: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/26.jpg)
Java Programming, Fourth Edition 26
Using a Variable Filename
• Instead of hard-coding filename – More flexible to use variable filename – Same application can process different data sets – Pass filename to method that opens file – First element of args array passed to main()
method becomes filename java ReadEmployeeFileFrame EmpData.dat
![Page 27: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/27.jpg)
Java Programming, Fourth Edition 27
First Part of the ReadEmployeeFileFrame Constructor Using a String
Argument
![Page 28: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/28.jpg)
Java Programming, Fourth Edition 28
A main() Method that Uses the First Element of the args Array as the
Filename
![Page 29: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/29.jpg)
Java Programming, Fourth Edition 29
Creating and Using Random Access Files
• Sequential access files – Access records sequentially from beginning to end – Good for batch processing
• Same tasks with many records one after the other – Inefficient for many applications
• Realtime applications – Require immediate record access while client waits
![Page 30: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/30.jpg)
Java Programming, Fourth Edition 30
Creating and Using Random Access Files (continued)
• Random access files – Records can be located in any order – Also called direct access files
• Instant access files – Records must be accessed immediately
• RandomAccessFile class – Create random access files
RandomAccessFile myFile = new RandomAccessFile("C:\\Temp\\SomeData.dat","rw");
![Page 31: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/31.jpg)
Java Programming, Fourth Edition 31
Creating and Using Random Access Files (continued)
• RandomAccessFile class (continued) – Contains read(), write(), and close() – seek() method
• Select beginning position within file • Places file pointer at selected location myFile.seek(200);
• File pointer, or file position pointer – Automatically created variable – Holds byte number of next file position to be used
![Page 32: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/32.jpg)
Java Programming, Fourth Edition 32
Writing Records to a Random Access File
• Access a particular record myFile.seek((n-1) * 50);
• Place records into file based on key field • Key field
– Field that makes record unique from all others
![Page 33: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/33.jpg)
Java Programming, Fourth Edition 33
Sizes of Data Types
![Page 34: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/34.jpg)
Java Programming, Fourth Edition 34
Reading Records From a Random Access File
• Process random access file – Sequentially – Randomly
![Page 35: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/35.jpg)
Java Programming, Fourth Edition 35
Accessing a Random Access File Sequentially
• ReadRandomStudentFile application – Reads through 1000-record StudentData.dat file
sequentially in a for loop (shaded) • Reads int-double pairs
– When ID number value is 0 • No user-entered record stored at that point • Application does not bother to print it
![Page 36: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/36.jpg)
Java Programming, Fourth Edition 36
Accessing a Random Access File Randomly
• Display records in order based on key field – Do not need to create random access file – Wastes unneeded storage – Instead sort records
• Benefit of using random access file – Retrieve specific record from file directly – Without reading through other records
![Page 37: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/37.jpg)
Java Programming, Fourth Edition 37
Accessing a Random Access File Randomly (continued)
• ReadRandomStudentFile2 application – Calculates student record’s position in data file – Positions file pointer at correct location to begin
reading
![Page 38: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/38.jpg)
Java Programming, Fourth Edition 38
Reading and Writing Objects to and from Files
• Serialization – Java’s built-in mechanism for manipulating objects
as streams of bytes • Serializable interface
– Endows your class with ability to be serialized implements Serializable
• After serialized object written into file – Can be read from file and deserialized
![Page 39: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/39.jpg)
Java Programming, Fourth Edition 39
The Employee Class
![Page 40: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/40.jpg)
Java Programming, Fourth Edition 40
Reading and Writing Objects to and from Files (continued)
• Deserialization – Process of recreating an object in computer memory
after it is retrieved from a file • Scanner object
– Text reader can pull primitive types and strings from input data streams
– Works by dividing input into pieces called tokens • Single, small elements of text
![Page 41: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/41.jpg)
Java Programming, Fourth Edition 41
Selected Scanner Class Methods
![Page 42: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/42.jpg)
Java Programming, Fourth Edition 42
You Do It
• Using the File class to examine file status • Comparing two file dates • Using InputStream and OutputStream objects • Writing to an output file • Reading data from a file • Creating a file of sequential data records
![Page 43: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/43.jpg)
Java Programming, Fourth Edition 43
You Do It (continued)
• Adding a constructor that opens a file • Adding an actionPerformed() method • Adding a main() method • Reading from a sequential access file • Creating a random access file • Accessing records randomly
![Page 44: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/44.jpg)
Java Programming, Fourth Edition 44
Summary
• Files – Objects stored on nonvolatile, permanent storage
• File class – Gather file information
• Java views file as a series of bytes – Views stream as object through which input and
output data flows • DataOutputStream class
– Accomplish formatted output
![Page 45: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java Programming, Fourth Edition 38 Reading and Writing Objects to and from Files • Serialization](https://reader033.vdocument.in/reader033/viewer/2022042202/5ea22ec174f7d32092322fe6/html5/thumbnails/45.jpg)
Java Programming, Fourth Edition 45
Summary (continued)
• DataInputStream objects – Read binary data from InputStream
• Random access files – Records can be located in any order – RandomAccessFile class
• Write objects to files if they implement Serializable interface