Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java...

45
Java Programming Fourth Edition Chapter 16 File Input and Output

Transcript of Java Programming Fourth Edition - Rutgers Universityszhou/351/ch16.pdf · 2010-11-23 · Java...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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