Post on 02-Feb-2016
description
transcript
Java
Chapter 9File Input and Output
Objectives
In this chapter you will: Learn how bits, characters, records, and files fit into a
data hierarchy Explore the differences between text files and binary
files Use the File class to identify, manage, and
manipulate files Perform data input and output with text files Perform data input and output with binary files
File Input and Output
Most real-world applications use data files Data stored in files are called persistent
data Reading data from a file is called file input Writing data to a file is called file output File processing refers to file input or file
output
File Input and Output (continued) Two types of files
Text files contain only human-readable characters
Binary files contain human-readable characters and other characters understood by the software or hardware
Files containing data needed by an application may be either text or binary
Inputting Data from a Text File
Many programs are designed to use external data External data can be numeric
Stock prices, GPS coordinates temperatures External data can be string
Names, descriptions, passwords If such data is stored permanently in a data file,
and is designed to be human-readable, it is a text file
Text File Organization
Recall all data ultimately is a sequence of 0s and 1s, which represent two states of electronic circuits: on and off
A localized group of 8 bits forms a byte and bytes represent characters
Example: ‘A’ is 65 in Unicode, 01000001 in binary:
0X27+ 1X26+ 0X25+ 0X24+ 0X23+ 0X22+ 0X21+ 1X20
Text File Organization (continued) A data field is a group of characters that has a
specific meaningExample: last_name, student_ID, test_score
A data record is a group of related fieldsExample: Smith 12345 95.5Attributes of the same individual
A data file is a group of related data records stored in a single file
Text File Organization (continued)
The File Class The File class establishes the file’s name and
location and opens the file for input If the file is in a directory other than the current,
its path must be specified The relative path is the path of folders that leads
to the file relative to the current file The absolute path is the path from the drive
letter to the file The syntax for declaring a File object: File myFl = new File (“./mydata.txt”);
The FileReader and BufferedReader Classes After the data file is established using a File
object, the data in the file can be read A source file provides data to a program Analogous to a pipeline
The pipeline has 2 ends connected to the source (the input file) and destination (the program file)
The pipeline has a valve that controls the amount of data allowed into the program
The FileReader and BufferedReader Classes (continued)
The FileReader and BufferedReader Classes (continued) Establish a data source
File infl = new File (“./source.txt”); Create a pipeline from source to program
FileReader frdr =
new FileReader (infl); Create a valve
BufferedReader aBfrd =
new BufferedReader(frdr);
The FileReader and BufferedReader Classes (continued)
Read one line of data
String aRcrd = aBfrd.readLine(); Input can also be read using the Scanner class
File infl = new File (./source.txt);
Scanner input = new Scanner (infl);
String aFld = input.next();
Apply the Concept
Develop an application to read IDs, names, and scores of students from a file and display the average score for each student
A while loop tests whether the program is at the end of the student names file
As IDs are read scores are read and totalScore and scoreCount are updated
Working with Directories
The file object has many methods. The file can be a folder or directory. Review the API documentation for all of
the methods. http://java.sun.com/j2se/1.4.2/docs/api/index.html
Note the list() and list(filter) methods that can be used to return a list of files (as well as other folders) in a folder.
Outputting Data to a Text File
Previously we have accessed data from a source file
Next, we output data to a destination file A destination file receives data from a
program
The File Class
File objects for output are created just as for input
Unlike source files, destination files do not have to exist before the program is run
If the destination file already exists, it is overwritten when the program is run
If the destination file does not exist, it is created
The File Class (continued)
The FileWriter and PrintWriter Classes Instantiate a File object to create the data
destination Instantiate a FileWriter object to create a pipeline
from the program to the output file FileWriter throws an IOException if it can’t
create the output file Instantiate a PrintWriter object to enable writing
to the output file Use the println method in PrintWriter to write
the output
The FileWriter and PrintWriter Classes (continued)
Apply the Concept
Modify previous example to print each student’s score average to file, as well as to the command window
The application uses the same input files Import java.io.IOException, java.io.FileWriter, and java.io.PrintWriter
Instantiate a File object for writing output PrintWriter is declared outside of the try block
to be accessible in the finally block
Apply the Concept (continued)
A runtime error can occur if the output file location is nonexistent
Apply the Concept (continued)
Performing Input and Output with Binary Files The previous sections discussed reading from and
writing to text files Java classes Scanner, FileReader, BufferedReader, FileWriter, and PrintWriter work with pipelines or streams that carry text data
All files not classified as text files are binary files Binary files can be compiled programs, image files,
sound files, compressed files
Identifying an Input/Output File
The process of using the File class is the same for text files and binary files
Create a binary file to write to in the current directory
File file1 =
new File ( “./myFile.dat” );
Writing to a Binary File To write to a text file there are 5 steps:File oFl = new File ( “averages.txt”);
FileWriter fwt = new FileWriter (oFl);
PrintWriter pwt = new PrintWriter (fwt);
pwt.println (aLineOfData);
pwt.close(); To write to a binary file, substitute:
FileOutputStream for FileWriter DataOutputStream for PrintWriter writeChar for println
Reading from a Binary File
To read from a binary file, identify the input file using a File object
A FileInputStream object connects the input file to the program
The DataInputStream allows different types of data to be read
Methods in DataInputStream read different types of data
Reading from a Binary File
Summary
Data is arranged in a hierarchy: files, records, fields, characters, bits
The File class identifies a file to the program so that it can be read from or written to
An absolute path is the path from the drive letter to the file
A relative path is the path to the file relative to the current file
The class FileReader reads a continuous stream of characters from a text file
Summary (continued)
The class BufferedReader controls the flow of characters through the FileReader object
The class FileWriter establishes a data stream from the program to a text file
The class PrintWriter enables writing formatted text to a text file
The classes FileOutputStream and DataOutputStream write program data to binary files
The classes FileInputStream and DataInputStream read data from binary files