Java Programming Fourth Edition
Chapter 16 File Input and Output
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
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
Java Programming, Fourth Edition 4
Objectives (continued)
• Read records from a random access file • Read and write objects to and from files
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
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
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
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
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");
Java Programming, Fourth Edition 10
Selected File Class Methods
Java Programming, Fourth Edition 11
The FileDemo Class
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
Java Programming, Fourth Edition 13
Data Hierarchy
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
Java Programming, Fourth Edition 15
File Streams
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
Java Programming, Fourth Edition 17
Description of Selected Classes Used for Input and Output
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
Java Programming, Fourth Edition 19
Using Streams (continued)
• BufferedInputStream class – Allows keyboard data to be entered at command line – Held until user presses Enter
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
Java Programming, Fourth Edition 21
Reading from a File
• Read data from file – Create File object and assign it to input stream
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
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"));
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"));
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
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
Java Programming, Fourth Edition 27
First Part of the ReadEmployeeFileFrame Constructor Using a String
Argument
Java Programming, Fourth Edition 28
A main() Method that Uses the First Element of the args Array as the
Filename
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
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");
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
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
Java Programming, Fourth Edition 33
Sizes of Data Types
Java Programming, Fourth Edition 34
Reading Records From a Random Access File
• Process random access file – Sequentially – Randomly
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
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
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
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
Java Programming, Fourth Edition 39
The Employee Class
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
Java Programming, Fourth Edition 41
Selected Scanner Class Methods
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
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
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
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