Download Chapter - SIUE Computer Science

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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
Related documents