college/Summer-2024/CS-3443/Slides/txt/06_File-IO.txt

281 lines
4.8 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Application
Programming
Hend Alkittawi
File I/O
Working with File Input and Output
WORKING WITH DATA
-
Data can be stored on a computer in a file with a particular name!
-
There are two fundamentally different ways to store data in a
file:
-
Text files store data in text format: data items are represented in
human readable form, and can be edited using simple text editors.
-
-
*.txt, *.java, *.html, *.csv
Binary files store data in binary format: data items are
represented in bytes, and stored using an internal format that
requires special software to process.
-
*.jpeg, *.pdf
READERS, WRITERS, AND STREAMS
-
Java APIs provide two set of classes for handling input and
output.
-
If data is stored in text form (as a sequence of characters),
the Reader and Writer classes and their subclasses are used to
produce input and output.
-
If data is stored in binary form (as a sequence of bytes), the
InputStream and OutputStream classes and their subclasses are
used to produce input and output.
READERS, WRITERS, AND STREAMS
Reader
Writer
InputStream
OutputStream
InputStreamReader
PrintWriter
FileInputStream
FileOutputStream
FileReader
OutputStreamWriter
ObjectInputStream
ObjectOutputStream
FileWriter
PrintStream
READERS, WRITERS, AND STREAMS
-
To read text data from a disk file, create a FileReader object
-
To read binary data from a disk file create a FileInputStream
object
-
To write text data to a disk file, create a FileWriter object
-
To write binary data to a disk file create a FileOutputStream
object
THE Scanner CLASS
-
The Scanner class is flexible in that Scanner objects
can be attached to many different kinds of input.
-
-
input from the console
-
input from a file
Reader
When constructing a Scanner from a file object, the
Scanner automatically constructs a FileReader.
-
The Scanner class is part of the java.util package.
-
If the program is unable to locate the specified input
InputStreamReader
file, it will generate an exception which will prevent
the the program from continuing normal execution.
-
You can throw the exception or handle it with a
try/catch.
FileReader
THE Scanner CLASS
-
Some of the useful methods for reading input in the Scanner
class:
-
-
token-based processing
-
hasNext(): checks if the input has a token to read
-
next(): reads and returns the next token as a String
-
nextInt(): reads and returns an int value
-
nextDouble(): reads and returns a double value
line-based processing
-
hasNextLine(): checks if the input has a line to read
-
nextLine(): reads and returns the next line of input as a String
FILES AND File OBJECTS
-
To access a file from inside a Java program, you need to
construct an internal object that will represent the file.
-
Once you have constructed the object, you can call a number of
methods to manipulate the file.
File myFile = new File ("myFile.txt");
if (file.exists() && file.canRead()) {
// read the file!
}
-
The File class is part of java.io package.
READING A FILE WITH THE Scanner CLASS
-
Instead of instantiating objects with fixed values coded into
the application, we can instantiate objects by reading data
from a file.
-
create a data directory in your Eclipse project, and place the
file in it. Then, add code to read the data from a file
public void loadData(String fileName) throws FileNotFoundException {
File file = new File( "data/" + filename );
Scanner scan = new Scanner( file );
while( scan.hasNextLine() ) {
String line = scan.nextLine();
String[] tokens = line.split(",");
// do sth with the string and/or tokens, we will create an object based on the tokens!
MyClass obj = new MyClass(tokens[0], Double.parseDouble(tokens[1]), ...);
}
scan.close();
}
To create a data directory in your Eclipse project
right-click on project > New > Folder
Create a new file in the data directory, or copy and paste an existing file
right-click on data folder > New > File then enter data
OR
copy an existing file > right-click on data folder > paste
THE FileWriter CLASS
-
The FileWriter class can be utilized to write text data
to a file.
-
Writer
Use the write() method to write a String to the output
file.
-
If the program is unable to locate the specified input
file, it will generate an exception which will prevent
PrintWriter
the the program from continuing normal execution. You
can throw the exception or handle it with a try/catch.
public void writeFile(String filename) throws IOException{
File outFile = new File("data/" + filename);
OutputStreamWriter
FileWriter out = new FileWriter(outFile);
out.write("Success! \n");
out.write("Keep it up ...");
out.close();
}
FileWriter
CODE DEMO
-
Modify the classes
created in previous
sessions to demo file
I/O concepts.
DO YOU HAVE ANY
QUESTIONS?
THANK
YOU!
@
hend.alkittawi@utsa.edu
By Appointment
Online