Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Chapter 10
Ch 1 – Introduction to
Computers and Java
Streams and
File IO
1
Chapter 10
10.1 File IO Overview
10.2 Text-File IO
10.3 File Techniques
10.6 Graphics Supplement
2
10.1
File IO
Overview
3
A stream is a stream is a stream
All IO can be viewed as
a stream of data
4
An Input stream delivers data to
your program
Streaming data
5
An Output stream accepts data
from your program
Streaming data
6
A file could be treated as
text or binary
All data is binary at the end of the
day
7
A text file treats the binary data as
characters
1
2
3
4
5
-
4
0
2
7
8
Each digit uses 1 (ASCII) or 2 (Unicode) bytes
8
A binary file manipulates the
binary data
12345
-4027
8
Each data item uses the same number
of bytes (4 for ints)
9
Recap
A program reads data from an input stream
A program writes data to an output stream
A text file interprets its binary data as text
A binary file deals with the binary data itself
10
10.2
Text-File IO
11
There are four steps in using file IO
1
Open the file stream
2
Test the Connection
3
Perform the IO
4
Close the stream
12
(1) Open the file stream
// Reading
Scanner fin = null;
try {
fin = new Scanner(new File(filename));
}
// Writing
PrintWriter fout = null;
try {
// Create empty file
fout = new PrintWriter(filename);
// or
fout = new PrintWriter(new FileOutputStream(filename, false));
// Append to the file
fapp = new PrintWriter(new FileOutputStream(filename, true));
}
13
(2) Test the Connection
catch (FileNotFoundException e) {
System.err.println("Error opening file " + filename);
System.exit(1);
}
14
(3) Perform the IO
// Reading
while (fin.hasNextLine()) {
String line = fin.nextLine();
// process the line
...
}
// Writing
fout.println("Write some output");
...
15
(4) Close the Stream
// Reading
fin.close();
// Writing
fout.close();
16
Application Deconstructed
<FileOutput.java>
package fileoutput;
import java.io.PrintWriter;
import java.io.FileNotFoundException;
public class FileOutput {
public static void main(String[] args) {
PrintWriter fout = null;
String filename = "fileOutput.txt";
// Open and test the output stream.
try {
fout = new PrintWriter(filename);
} catch (FileNotFoundException e) {
System.err.println("Error opening the file " + filename);
System.exit(1);
}// end try
17
Application Deconstructed
<FileOutput.java>
// Perform some IO.
for (int line = 1; line <= 5; line++) {
fout.println(line + ": " + "This is just a line");
}
// Close the stream.
fout.close();
System.out.println("File " + filename +
" was created successfully.");
}// end main()
} // end FileOutput
18
Application Deconstructed
<FileOutput.java>
19
Application Deconstructed
<FileInput.java>
package fileinput;
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class FileInput {
public static void main(String[] args) {
String filename = "fileOutput.txt";
Scanner fin = null;
// Open and test the stream.
try {
fin = new Scanner(new File(filename));
} catch (FileNotFoundException e) {
System.err.println(e);
System.exit(1);
}// end try
20
Application Deconstructed
<FileInput.java>
// Perform the IO.
while (fin.hasNext()) {
int lineNumber = Integer.parseInt(
fin.next().replace(":", ""));
String lineText = fin.nextLine();
System.out.println(lineText + lineNumber);
}// end while
// Close the stream.
fin.close();
}// end main()
}// end FileInput
21
Recap
Open the file stream first in a try block
Catch any errors that occur during opening
Perform the IO
Close the stream as soon as IO is finished
22
10.3
File
Techniques
23
The File class offers useful
functionality
public boolean canRead()
// Can program read from the file?
public boolean canWrite()
// Can program write to the file?
public boolean delete()
// Was file detected?
public boolean exists()
// Does the file exist?
String getName()
// Get file's name.
String getPath()
// Get file's path.
public long length()
// Get file's path.
24
Application Deconstructed
<FileClass.java>
package fileclass;
import java.io.File;
import java.util.Scanner;
public class FileClass {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
File file = null;
// Ask the user for the file.
System.out.print("Enter the filename: ");
file = new File(keyboard.nextLine());
25
Application Deconstructed
<FileClass.java>
// Let's test some File methods.
System.out.println("");
System.out.println("Does file exist? " +
String.valueOf(file.exists()));
...
}// end main()
}// end FileClass
26
Application Deconstructed
<FileClass.java>
// Let's test some File methods.
...
System.out.println("Can file be read? " +
String.valueOf(file.canRead()));
...
}// end main()
}// end FileClass
27
Application Deconstructed
<FileClass.java>
// Let's test some File methods.
...
System.out.println("Can file be written? " +
String.valueOf(file.canWrite()));
...
}// end main()
}// end FileClass
28
Application Deconstructed
<FileClass.java>
// Let's test some File methods.
...
System.out.println("Filename: " + file.getName());
...
}// end main()
}// end FileClass
29
Application Deconstructed
<FileClass.java>
// Let's test some File methods.
...
System.out.println("File path: " + file.getPath());
...
}// end main()
}// end FileClass
30
Application Deconstructed
<FileClass.java>
// Let's test some File methods.
...
System.out.println("File absolute path: " +
file.getAbsolutePath());
...
}// end main()
}// end FileClass
31
Application Deconstructed
<FileClass.java>
// Let's test some File methods.
...
System.out.println("File length: " + file.length() +
" bytes");
}// end main()
}// end FileClass
32
Application Deconstructed
<FileClass.java>
// Let's test some File methods.
System.out.println("");
System.out.println("Does file exist? " +
String.valueOf(file.exists()));
System.out.println("Can file be read? " +
String.valueOf(file.canRead()));
System.out.println("Can file be written? " +
String.valueOf(file.canWrite()));
System.out.println("Filename: " + file.getName());
System.out.println("File path: " + file.getPath());
System.out.println("File absolute path: " +
file.getAbsolutePath());
System.out.println("File length: " + file.length() +
" bytes");
}// end main()
}// end FileClass
33
Application Deconstructed
<FileClass.java>
34
Application Deconstructed
<CSVFile.java>
package csvfile;
import
import
import
import
java.io.PrintWriter;
java.io.File;
java.io.FileNotFoundException;
java.util.Scanner;
public class CSVFile {
public static void main(String[] args) {
Scanner fin = null;
PrintWriter fout = null;
String filename = "csv.txt";
35
Application Deconstructed
<CSVFile.java>
try {
fin = new Scanner(new File(filename));
fout = new PrintWriter("csvout.txt");
} catch (FileNotFoundException e) {
System.err.println(e);
System.exit(1);
}// end try
36
Application Deconstructed
<CSVFile.java>
String line = null;
int pos;
// Read from the input file and write to output file.
while (fin.hasNextLine()) {
line = fin.nextLine();
// Write the record number.
pos = line.indexOf(",");
fout.print(line.substring(0, pos) + ":");
line = line.substring(pos + 1);
// Write the first name.
pos = line.indexOf(",");
fout.print(line.subSequence(0, pos) + ":");
line = line.substring(pos + 1);
// Write the last name.
fout.println(line);
}// end while
37
Application Deconstructed
<CSVFile.java>
fin.close();
fout.close();
System.out.println(filename + " was read and " +
"csvout.txt was written.");
}// end main()
}// end CSVFile
38
Application Deconstructed
<CSVFile.java>
39
Recap
Use a File object for useful file information
A csv file requires special handling (for now
anyway)
40
10.6
Graphics
Supplement
41
Application Deconstructed
<FileFrame.java>
package fileframe;
import
import
import
import
import
import
javax.swing.JFrame;
javax.swing.JTextArea;
java.awt.Container;
java.util.Scanner;
java.io.File;
java.io.FileNotFoundException;
public class FileFrame extends JFrame {
JTextArea contentsTextArea;
public static void main(String[] args) {
FileFrame frame = new FileFrame();
frame.setSize(600, 500);
frame.setTitle("File Viewer :: fileOutput.txt");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}// end main()
42
Application Deconstructed
<FileFrame.java>
// Constructor.
public FileFrame() {
initComponents();
}// end FileFrame()
private void initComponents() {
// Create the TextArea.
contentsTextArea = new JTextArea();
Container contentPane = getContentPane();
// Add the control to the content pane.
contentsTextArea.setSize(590, 470);
contentPane.add(contentsTextArea);
// Load the text file contents into the TextArea.
LoadTextAreaWithFile("fileOutput.txt");
}// end initComponents()
43
Application Deconstructed
<FileFrame.java>
private void LoadTextAreaWithFile(String filename) {
Scanner fin = null;
try {
fin = new Scanner(new File(filename));
} catch (FileNotFoundException e) {
System.err.println(e);
System.exit(1);
}// end try
while (fin.hasNextLine()) {
contentsTextArea.append(fin.nextLine() + "\n");
}// end while
fin.close();
}// end LoadTextAreaWithFile()
}// end FileFrame
44
Application Deconstructed
<FileFrame.java>
45