450 likes | 611 Views
Chapter 10. Ch 1 – Introduction to Computers and Java. Streams and File IO. Chapter 10. 10.1 File IO Overview 10.2 Text-File IO 10.3 File Techniques 10.6 Graphics Supplement. 10.1 File IO Overview. A stream is a stream is a stream. All IO can be viewed as a stream of data.
E N D
Chapter 10 Ch 1 – Introduction toComputers and Java Streams and File IO
Chapter 10 10.1 File IO Overview 10.2 Text-File IO 10.3 File Techniques 10.6 Graphics Supplement
A stream is a stream is a stream All IO can be viewed as a stream of data
An Input stream delivers data toyour program Streaming data
An Output stream accepts data from your program Streaming data
A file could be treated astext or binary All data is binary at the end of the day
A text file treats the binary data as characters Each digit uses 1 (ASCII) or 2 (Unicode) bytes
A binary file manipulates the binary data Each data item uses the same number of bytes (4 for ints)
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
There are four steps in using file IO 1 2 3 4 Open the file stream Test the Connection Perform the IO Close the stream
(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)); }
(2) Test the Connection catch (FileNotFoundException e) { System.err.println("Error opening file " + filename); System.exit(1); }
(3) Perform the IO // Reading while (fin.hasNextLine()) { String line = fin.nextLine(); // process the line ... } // Writing fout.println("Write some output"); ...
(4) Close the Stream // Reading fin.close(); // Writing fout.close();
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
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
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
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
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
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.
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());
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
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
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
Application Deconstructed<FileClass.java> // Let's test some File methods. ... System.out.println("Filename: " + file.getName()); ... }// end main() }// end FileClass
Application Deconstructed<FileClass.java> // Let's test some File methods. ... System.out.println("File path: " + file.getPath()); ... }// end main() }// end FileClass
Application Deconstructed<FileClass.java> // Let's test some File methods. ... System.out.println("File absolute path: " + file.getAbsolutePath()); ... }// end main() }// end FileClass
Application Deconstructed<FileClass.java> // Let's test some File methods. ... System.out.println("File length: " + file.length() + " bytes"); }// end main() }// end FileClass
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
Application Deconstructed<CSVFile.java> package csvfile; import java.io.PrintWriter; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class CSVFile { public static void main(String[] args) { Scanner fin = null; PrintWriter fout = null; String filename = "csv.txt";
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
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
Application Deconstructed<CSVFile.java> fin.close(); fout.close(); System.out.println(filename + " was read and " + "csvout.txt was written."); }// end main() }// end CSVFile
Recap • Use a File object for useful file information • A csv file requires special handling (for now anyway)
Application Deconstructed<FileFrame.java> package fileframe; import javax.swing.JFrame; import javax.swing.JTextArea; import java.awt.Container; import java.util.Scanner; import java.io.File; import 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()
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()
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