Your SlideShare is downloading. ×
0
File Input and Output
Objectives
 After you have read and studied this chapter, you should
be able to
 Use File object to get info about a fil...
File
 File is regarded as a collection of bytes
 When a file is read, computer delivers some of
those bytes to the progr...
Types of File
 All information in any file is kept in binary form.
Types of File
 File can be categorized as text (ASCII) file or binary file.
 A text file is a file that contains bytes t...
The File Class The File class (from java.io). can be used to obtain info about file
 To do this, we must first create a ...
Some File Methods
if ( inFile.exists( ) ) {
if ( inFile.isFile() ) {
File directory = new
File("C:/JavaPrograms/Ch12");
St...
Some File Methods
if ( inFile.length( ) ) {
if ( inFile.canRead() ) {
To see the size of the file
in bytes represented by
...
The JFileChooser Class
 A javax.swing.JFileChooser object allows
the user to select a file.
JFileChooser chooser = new JF...
The JFileChooser Class
Getting Info from
JFileChooser
int status = chooser.showOpenDialog(null);
if (status == JFileChooser.APPROVE_OPTION) {
JOp...
I/O Streams
 To read data from or write data to a file,
we must create one of the Java stream
objects and attach it to th...
I/O Streams
I/O Streams
 IO streams are either character-oriented or byte-
oriented.
 Character-oriented IO has special features for...
Streams for Byte –level Binary File I/O
 FileOutputStream and
FileInputStream are two stream objects
that facilitate file...
Sample: Byte-level Binary
File Output//set up file and stream
File outFile = new File("sample1.data");
FileOutputStream
ou...
Sample: Byte-level Binary
File Input//set up file and stream
File inFile = new File("sample1.data");
FileInputStream inStr...
Streams for Data-Level Binary File I/O
 FileOutputStream and
DataOutputStream are used to output
primitive data values
 ...
Setting up
DataOutputStream A standard sequence to set up a DataOutputStream
object:
Sample Output
import java.io.*;
class Ch12TestDataOutputStream {
public static void main (String[] args) throws IOExceptio...
Setting up DataInputStream A standard sequence to set up a DataInputStream object:
Sample Input
import java.io.*;
class Ch12TestDataInputStream {
public static void main (String[] args) throws IOException ...
Reading Data Back in Right
Order The order of write and read operations must match in
order to read the stored primitive ...
Reading & Writing Textfile
 Instead of storing primitive data values
as binary data in a file, we can convert
and store t...
Sample Writing to Textfile
import java.io.*;
class Ch12TestPrintWriter {
public static void main (String[] args) throws IO...
Sample Reading from
Textfileimport java.io.*;
class Ch12TestBufferedReader {
public static void main (String[] args) throw...
Sample Reading Textfile
using Scanner
import java.io.*;
class Ch12TestScanner {
public static void main (String[] args) th...
try{
// read line one by one till all line is read.
Scanner scanner = new Scanner(inFile);
while (scanner.hasNextLine()) {...
Upcoming SlideShare
Loading in...5
×

File Input & Output

292

Published on

Chapter 10

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
292
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • When a program that manipulates a large amount of data practical, we must save the data to a file. If we don’t, then the user must reenter the same data every time he or she runs the program because any data used by the program will be erased from the main memory at program termination.
    If the data were saved, then the program can read them back from the file and rebuild the information so the user can work on the data without reentering them. In this chapter you will learn how to save data to and read data from a file. We call the action of saving data to a file file output and the action of reading data from a file file input.
    Note: The statements
    new File( “C:\SamplePrograms”, “one.txt”);
    and
    new File(“C:\SamplePrograms\one.text”);
    will open the same file.
  • We can start the listing from a current directory by writing
    String current = System.getProperty("user.dir");
    JFileChooser chooser = new JFileChooser(current);
    or equivalently
    String current = System.getProperty("user.dir");
    JFileChooser chooser = new JFileChooser( );
    chooser.setCurrentDirectory(new File(current));
  • We can start the listing from a current directory by writing
    String current = System.getProperty("user.dir");
    JFileChooser chooser = new JFileChooser(current);
    or equivalently
    String current = System.getProperty("user.dir");
    JFileChooser chooser = new JFileChooser( );
    chooser.setCurrentDirectory(new File(current));
  • Data is saved in blocks of bytes to reduce the time it takes to save all of our data.
    The operation of saving data as a block is called data caching.
    To carry out data caching, part of memory is reserved as a data buffer or cache, which is used as a temporary holding place.
    Data are first written to a buffer. When the buffer becomes full, the data in the buffer are actually written to a file.
    If there are any remaining data in the buffer and the file is not closed, those data will be lost.
  • class TestFileOutputStream
    {
    public static void main (String[] args) throws IOException
    {
    //set up file and stream
    FileoutFile = new File("sample1.data");
    FileOutputStreamoutStream = new FileOutputStream(outFile);
    //data to output
    byte[] byteArray = {10, 20, 30, 40, 50, 60, 70, 80};
    //write data to the stream
    outStream.write(byteArray);
    //output done, so close the stream
    outStream.close();
    }
    }
    The main method throws an exception. Exception handling is described in Section 11.4.
  • import javabook.*;
    import java.io.*;
    class TestFileInputStream
    {
    public static void main (String[] args) throws IOException
    {
    MainWindow mainWindow = new MainWindow();
    OutputBox outputBox = new OutputBox(mainWindow);
    mainWindow.setVisible( true );
    outputBox.setVisible( true );
    //set up file and stream
    FileinFile= new File("sample1.data");
    FileInputStream inStream = new FileInputStream(inFile);
    //set up an array to read data in
    int fileSize = (int)inFile.length();
    byte[] byteArray = new byte[fileSize];
    //read data in and display them
    inStream.read(byteArray);
    for (int i = 0; i < fileSize; i++) {
    outputBox.printLine(byteArray[i]);
    }
    //input done, so close the stream
    inStream.close();
    }
    }
  • Transcript of "File Input & Output"

    1. 1. File Input and Output
    2. 2. Objectives  After you have read and studied this chapter, you should be able to  Use File object to get info about a file  Include a JFileChooser object in your program to let the user specify a file.  Write bytes to a file and read them back from the file, using FileOutputStream and FileInputStream.  Write values of primitive data types to a file and read them back from the file, using DataOutputStream and DataInputStream.  Write text data to a file and read them back from the file, using FileWriter,PrintWriter and FileReader,BufferedReader  Read a text file using Scanner
    3. 3. File  File is regarded as a collection of bytes  When a file is read, computer delivers some of those bytes to the program.  When a file is written, computer accepts some bytes from the program and saves them in part of the file.  Computer makes no distinction between eg. image files and text files. Its all bytes to the hardware. What those bytes are used for is up to the software.
    4. 4. Types of File  All information in any file is kept in binary form.
    5. 5. Types of File  File can be categorized as text (ASCII) file or binary file.  A text file is a file that contains bytes that represent:  characters 'A' through 'Z'  characters 'a' through 'z'  characters '0' through '9'  the space character  punctuation and symbols like . , : ; " + - $ (and others)  a few control characters that represent end of lines, tabs and some other things. using ASCII Codes  A binary file is a file that contains bytes that represent others (eg. numbers, image, audio, formatted text etc)
    6. 6. The File Class The File class (from java.io). can be used to obtain info about file  To do this, we must first create a File object  A File object can represent a file or a directory File inFile = new File(“sample.dat”); File inFile = new File (“C:/SamplePrograms/test.dat”); Creates File object for the file sample.dat in the current directory. Creates File object for the file sample.dat in the current directory. Creates File object for the file test.dat in the directory C:SamplePrograms using the generic file separator / and providing the full pathname. Creates File object for the file test.dat in the directory C:SamplePrograms using the generic file separator / and providing the full pathname.
    7. 7. Some File Methods if ( inFile.exists( ) ) { if ( inFile.isFile() ) { File directory = new File("C:/JavaPrograms/Ch12"); String filename[] = directory.list(); for (int i = 0; i < filename.length; i++) { System.out.println(filename[i]); } To see if inFile is associated to a real file correctly. To see if inFile is associated to a real file correctly. To see if inFile is associated to a file. If false, it is a directory. Also, can test directly if it is a directory. To see if inFile is associated to a file. If false, it is a directory. Also, can test directly if it is a directory. List the name of all files in the directory C:JavaProjectsCh12 List the name of all files in the directory C:JavaProjectsCh12 if ( inFile.isDirectory() ) {
    8. 8. Some File Methods if ( inFile.length( ) ) { if ( inFile.canRead() ) { To see the size of the file in bytes represented by inFile To see the size of the file in bytes represented by inFile To see if inFile is associated to a file that exist & can be read To see if inFile is associated to a file that exist & can be read if ( inFile.canWrite() ) { To see if inFile is associated to a file that exist & can be written To see if inFile is associated to a file that exist & can be written if ( inFile.getName() ) { To get the name of the file represented by inFile To get the name of the file represented by inFile
    9. 9. The JFileChooser Class  A javax.swing.JFileChooser object allows the user to select a file. JFileChooser chooser = new JFileChooser( ); chooser.showOpenDialog(null); JFileChooser chooser = new JFileChooser("D:/JavaPrograms/Ch12"); chooser.showOpenDialog(null); To start the listing from a specific directory:
    10. 10. The JFileChooser Class
    11. 11. Getting Info from JFileChooser int status = chooser.showOpenDialog(null); if (status == JFileChooser.APPROVE_OPTION) { JOptionPane.showMessageDialog(null, "Open is clicked"); } else { //== JFileChooser.CANCEL_OPTION JOptionPane.showMessageDialog(null, "Cancel is clicked"); } File selectedFile = chooser.getSelectedFile(); File currentDirectory = chooser.getCurrentDirectory();
    12. 12. I/O Streams  To read data from or write data to a file, we must create one of the Java stream objects and attach it to the file.  A stream is a sequence of data items, usually 8-bit bytes.  Java has two types of streams: an input stream and an output stream.  An input stream has a source form which the data items come, and an output stream has a destination to which
    13. 13. I/O Streams
    14. 14. I/O Streams  IO streams are either character-oriented or byte- oriented.  Character-oriented IO has special features for handling character data (text files).  Byte-oriented IO is for all types of data (binary files) IO class Hierarchy in java.io package
    15. 15. Streams for Byte –level Binary File I/O  FileOutputStream and FileInputStream are two stream objects that facilitate file access.  FileOutputStream allows us to output a sequence of bytes; values of data type byte.  FileInputStream allows us to read in an array of bytes.
    16. 16. Sample: Byte-level Binary File Output//set up file and stream File outFile = new File("sample1.data"); FileOutputStream outStream = new FileOutputStream( outFile ); //data to save byte[] byteArray = {10, 20, 30, 40, 50, 60, 70, 80}; //write data to the stream outStream.write( byteArray ); //output done, so close the stream outStream.close();
    17. 17. Sample: Byte-level Binary File Input//set up file and stream File inFile = new File("sample1.data"); FileInputStream inStream = new FileInputStream(inFile); //set up an array to read data in int fileSize = (int)inFile.length(); byte[] byteArray = new byte[fileSize]; //read data in and display them inStream.read(byteArray); for (int i = 0; i < fileSize; i++) { System.out.println(byteArray[i]); } //input done, so close the stream inStream.close();
    18. 18. Streams for Data-Level Binary File I/O  FileOutputStream and DataOutputStream are used to output primitive data values  FileInputStream and DataInputStream are used to input primitive data values  To read the data back correctly, we must know the order of the data stored and their data types
    19. 19. Setting up DataOutputStream A standard sequence to set up a DataOutputStream object:
    20. 20. Sample Output import java.io.*; class Ch12TestDataOutputStream { public static void main (String[] args) throws IOException { . . . //set up outDataStream //write values of primitive data types to the stream outDataStream.writeInt(987654321); outDataStream.writeLong(11111111L); outDataStream.writeFloat(22222222F); outDataStream.writeDouble(3333333D); outDataStream.writeChar('A'); outDataStream.writeBoolean(true); //output done, so close the stream outDataStream.close(); } }
    21. 21. Setting up DataInputStream A standard sequence to set up a DataInputStream object:
    22. 22. Sample Input import java.io.*; class Ch12TestDataInputStream { public static void main (String[] args) throws IOException { . . . //set up inDataStream //read values back from the stream and display them System.out.println(inDataStream.readInt()); System.out.println(inDataStream.readLong()); System.out.println(inDataStream.readFloat()); System.out.println(inDataStream.readDouble()); System.out.println(inDataStream.readChar()); System.out.println(inDataStream.readBoolean()); //input done, so close the stream inDataStream.close(); } }
    23. 23. Reading Data Back in Right Order The order of write and read operations must match in order to read the stored primitive data back correctly.
    24. 24. Reading & Writing Textfile  Instead of storing primitive data values as binary data in a file, we can convert and store them as a string data. This allows us to view the file content using any text editor  To write data as a string to text file, use a FileWriter and PrintWriter object  To read data from textfile, use FileReader and BufferedReader classes From Java 5.0 (SDK 1.5), we can also use the Scanner class for reading textfiles
    25. 25. Sample Writing to Textfile import java.io.*; class Ch12TestPrintWriter { public static void main (String[] args) throws IOException { //set up file and stream File outFile = new File("sample3.data"); FileWriter outFileStream = new FileWriter(outFile); PrintWriter outStream = new PrintWriter(outFileStream); //write values of primitive data types to the stream outStream.println(987654321); outStream.println("Hello, world."); outStream.println(true); //output done, so close the stream outStream.close(); } }
    26. 26. Sample Reading from Textfileimport java.io.*; class Ch12TestBufferedReader { public static void main (String[] args) throws IOException { //set up file and stream File inFile = new File("sample3.data"); FileReader fileReader = new FileReader(inFile); BufferedReader bufReader = new BufferedReader(fileReader); String str; str = bufReader.readLine(); int i = Integer.parseInt(str); //similar process for other data types bufReader.close(); } }
    27. 27. Sample Reading Textfile using Scanner import java.io.*; class Ch12TestScanner { public static void main (String[] args) throws IOException { //open the Scanner File inFile = new File("sample3.data"); Scanner scanner = new Scanner(inFile); //get integer int i = scanner.nextInt(); //similar process for other data types scanner.close(); } }
    28. 28. try{ // read line one by one till all line is read. Scanner scanner = new Scanner(inFile); while (scanner.hasNextLine()) { //check if there are more line String line = scanner.nextLine(); System.out.println(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } Sample Reading Textfile using Scanner Code fragments shows how to read the whole contents of a file Use hasNextLine() & nextLine() methods
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×