2. www.sunilos.com 2
Input/Output Concepts
Data Storage
o Transient memory : RAM
• It is accessed directly by processor.
o Persistent Memory: Disk and Tape
• It requires I/O operations.
I/O sources and destinations
o console, disk, tape, network, etc.
Streams
o It represents a sequential stream of bytes.
o It hides the details of I/O devices.
3. www.sunilos.com 3
IO Stream– java.io package
101010 101010Byte Array Byte Array
1010 1010ABCD
Binary Data
•.exe
•.jpg
•.class
Text Data
•.txt
•.java
•.bat
ABCDThis is Line This is Line
InputStream
ByteByte
OutputStream
BufferedOutputStream
BufferedInputStream
BufferedWriter
BufferedReader
Writer Reader
Char
Line
Char Line
Byte
Byte
• FileWriter
• PrintWriter
• FileReader
• InputStreamReader
• Scanner
• FileOutputStream
• ObjectOutputStream
• FileInputStream
• ObjectInputStream
4. www.sunilos.com 4
Types Of Data
character data
o Represented as 1-byte ASCII .
o Represented as 2-bytes Unicode within Java programs. The
first 128 characters of Unicode are the ASCII characters.
o Read by Reader and its subclasses.
o Written by Writer and its subclasses.
o You can use java.util.Scanner to read characters in
JDK1.5 onward.
binary data
o Read by InputStream and its subclasses.
o Written by OutputStream and its subclasses.
5. www.sunilos.com 5
Attrib.java : c:>java Attrib <fileName>
import java.io.File; java.util.Date;
public static void main(String[] args) {
File f = new File("c:/temp/a.txt”");
// File f = new File("c:/temp” , “a.txt");
if(f.exists()){
System.out.println(“Name” + f.getName());
System.out.println("Absolute path: " + f.getAbsolutePath());
System.out.println(" Is writable “ + f.canWrite());
System.out.println(" Is readable“ + f.canRead());
System.out.println(" Is File“ + f.isFile());
System.out.println(" Is Directory“ + f.isDirectory());
System.out.println("Last Modified at " + new Date(f.lastModified()));
System.out.println(“Length " + f.length() + " bytes long.");
}
}
}
6. www.sunilos.com 6
Representing a File
Class java.io.File represents a file or folder (directory).
o Constructors:
• public File (String path)
• public File (String path, String name)
o Interesting methods:
• boolean exists()
• boolean isDirectory()
• boolean isFile()
• boolean canRead()
• boolean canWrite()
• long length()
• long lastModified()
7. www.sunilos.com 7
Representing a File (Cont.)
More interesting methods:
o boolean delete()
o boolean renameTo(File dest)
o boolean mkdir()
o String[] list()
o File[] listFiles()
o String getName()
8. www.sunilos.com 8
Display file and subdirectories
This program displays files and subdirectories of
a directory.
public static void main(String[] args) {
File directory = new File("C:/temp");
//File directory = new File(args[0]);
String[] list = directory.list();
for (int i = 0; i < list.length; i++) {
System.out.println((i + 1) + " : " +
list[i]);
}
}
9. www.sunilos.com 9
Display only files from a folder
public static void main(String[] args) {
File directory = new File("C:/temp");
//File directory = new File(args[0]);
String[] list = directory.list();
for (int i = 0; i < list.length; i++) {
File f = new File(“c:/temp”,list[i]);
if(f.isFile()){
System.out.println((i + 1) + " : " + list[i]);
}
}
}
10. www.sunilos.com 10
Display only files from a folder
public static void main(String[] args) {
File directory = new File("C:/temp");
File[] list = directory.listFiles();
for (int i = 0; i < list.length; i++) {
if (list[i].isFile()) {
System.out.println((i + 1) + " : " + list[i].getName());
}
}
}
11. www.sunilos.com 11
FileReader- Read char from a file
public static void main(String[] args) throws Exception{
FileReader reader = new FileReader(“c:/test.txt”);
int ch = reader.read();
char chr;
while(ch != -1){
chr = (char)ch;
System.out.print( chr);
ch = reader.read();
}
}
12. www.sunilos.com 12
Read a file line by line
public static void main(String[] args) throws Exception {
FileReader reader = new FileReader("c:/test.txt");
BufferedReader br= new BufferedReader(reader);
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
reader.close();
}
13. www.sunilos.com 13
Read file by Line
1010
Text Data
•.txt
•.java
•.bat
ABCD This is Line
BufferedReader
FileReader
Char LineByte
Byte
Char
Line
14. www.sunilos.com 14
Write to a File
public static void main(String[] args) throws Exception {
FileWriter writer = new FileWriter("c:/newtest.txt");
PrintWriter pw= new PrintWriter(writer);
for (int i = 0; i < 5; i++) {
pw.println(i + " : Line");
}
pw.close();
writer.close();
System.out.println(“File is successfully written, Pl check c:/newtest.txt ");
}
15. www.sunilos.com 15
Write to a File
1010ABCD
•Text Data
•.txt
•.java
•.bat
This is Line
PrintWriter
FileWriter
Char
Line
Byte
Contains print and println methods
Line
Char
Byte
16. www.sunilos.com 16
Append Text/Bytes in existing File
FileWriter: You may use either constructor to create a
FileWriter object to append text in an existing file.
o FileWriter(“c:a.txt”,true)
o FileWriter(new File(“c:a.txt”),true)
FileOutputStream: You may use either constructor to create a
FileOutputStream object to append bytes in an existing binary
file.
o FileOutputStream (“c:a.jpg”,true)
o FileOutputStream (new File(“c:a.jpg”),true)
17. Copy A Text File
String source= "c:/a.txt";
String target = "c:/b.txt";
FileReader reader = new FileReader(source);
FileWriter writer = new FileWriter(target);
int ch = reader.read() ;
while (ch != -1){
o writer.write(ch);
o ch = reader.read();
}
writer.close();
reader.close();
System.out.println(source + " is copied to "+ target);
www.sunilos.com 17
18. Copy A Binary File
String source= "c:/IMG_0046.JPG";
String target = "c:/baby.jpg";
FileInputStream reader = new FileInputStream(source);
FileOutputStream writer = new FileOutputStream(target);
int ch = reader.read() ;
while (ch != -1){
o writer.write(ch);
o ch = reader.read();
}
writer.close();
reader.close();
System.out.println(source + " is copied to "+ target);
www.sunilos.com 18
19. Convert Binary to Text Stream
Class : InputStreamReader
Reads Data From Keyboard
o InputStreamReader ir= new InputStreamReader(System.in);
www.sunilos.com 19
1010
ABCD
CharByte
InputStreamReader
20. www.sunilos.com 20
Copycon command
Reads data from keyboard and writes into a file
String target= "c:/temp.txt";
FileWriter writer = new FileWriter(target);
PrintWriter printWriter = new PrintWriter(writer);
InputStreamReader isReader = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(isReader );
String line = in.readLine();
while (!line.equals("quit")) {
o printWriter.print(line);
o line = in.readLine();
}
printWriter.close();
isReader.close();
21. www.sunilos.com 21
Serialization
public class Employee implements Serializable {
private int id;
private String firstName;
private String lastName;
private Address add;
private transient String tempValue;
public Employee() { //Default Constructor }
public Employee(int id, String firstName, String lastName) {
o this.id = id;
o this.firstName = firstName;
o this.lastName = lastName;
}
//accessor methods
23. Why Serialization ?
When an object is persisted in a file.
When an object is sent over the Network.
When an object is sent to Hardware.
Or in other words when an object is sent Out of
JVM.
www.sunilos.com 23
24. Persist/Write an Object
FileOutputStream file = new
FileOutputStream("c:/object.ser");
ObjectOutputStream out = new ObjectOutputStream(file);
Employee emp = new Employee(10, “Sachin", “10lukar");
out.writeObject(emp);
out.close();
System.out.println("Object is successfully persisted");
www.sunilos.com 24
25. Read an Object
www.sunilos.com 25
FileInputStream file= new FileInputStream("c:/object.ser")
ObjectInputStream in = new ObjectInputStream(file);
Employee emp = (Employee) in.readObject();
System.out.println("ID : " + emp.getId());
System.out.println("F Name : " + emp.getFirstName());
System.out.println("L Name : " + emp.getLastName());
System.out.println("Temp Value: " + emp.getTempValue());
NOTE : transient variables will be discarded during serialization
26. www.sunilos.com 26
Write Primitive Data
What are primitive data types?
o int
o double
o float
o boolean
o char
Which classes to use?
o DataInputStream
o DataOutputStream
27. Write Primitive Data
public static void main(String[] args) throws Exception {
o FileOutputStream file = new
FileOutputStream("c:/primitivedata.dat");
o DataOutputStream out = new DataOutputStream(file);
o out.writeInt(1);
o out.writeBoolean(true);
o out.writeChar('A');
o out.writeDouble(1.2);
o out.close();
o file.close()
o System.out.println("Primitive Data successfully written");
}
www.sunilos.com 27
28. Read Primitive Data
public static void main(String[] args) throws Exception {
o FileInputStream file = new
FileInputStream("c:/primitivedata.dat");
o DataInputStream in = new DataInputStream(file);
o System.out.println(in.readInt());
o System.out.println(in.readBoolean());
o System.out.println(in.readChar());
o System.out.println(in.readDouble());
o in.close();
}
www.sunilos.com 28
29. www.sunilos.com 29
Primitive File - Write
public static void main(String[] args) throws Exception {
long dataPosition = 0; // to be determined later
RandomAccessFile in = new RandomAccessFile("datafile.dat", "rw");
// Write to the file.
in.writeLong(0); // placeholder
in.writeChars("blahblahblah");
dataPosition = in.getFilePointer();
in.writeInt(123);
in.writeBytes(“Blahblahblah");
// Rewrite the first byte to reflect updated data position.
in.seek(0);
in.writeLong(dataPosition);
in.close();
}
30. www.sunilos.com 30
Primitive File - Read
public static void main(String[] args) throws Exception {
long dataPosition = 0;
int data = 0;
RandomAccessFile raf = new RandomAccessFile("datafile", "r");
// Get the position of the data to read.
dataPosition = raf.readLong();
System.out.println("dataPosition : " + dataPosition);
// Go to that position.
raf.seek(dataPosition);
// Read the data.
data = raf.readInt();
raf.close();
System.out.println("The data is: " + data);
}
31. www.sunilos.com 31
java.util.Scanner
A simple text scanner which can parse primitive data
types and strings using regular expressions.
Reads character data as Strings, or converts to primitive
values.
Does not throw checked exceptions.
Constructors
o Scanner (File source) // reads from a file
o Scanner (InputStream source) // reads from a stream
o Scanner (String source) // scans a String
33. www.sunilos.com 33
Read File By Scanner
public static void main(String[] args) throws Exception{
FileReader reader = new FileReader("c:/newtest.txt");
Scanner sc = new Scanner(reader);
while(sc.hasNext()){
System.out.println(sc.nextLine());
}
reader.close();
}
34. Token A String
Breaks string into tokens.
public static void main(String[] args) {
o String str = “This is Java, Java is Object Oriented
Language, Java is guarantee for job";
o StringTokenizer stn = new StringTokenizer(str, ",");
o String token = null;
o while (stn.hasMoreElements()) {
o token = stn.nextToken();
o System.out.println(“Token is : " + token);
o }
}
www.sunilos.com 34
35. www.sunilos.com 35
Summary
What is IO Package
o java.io
How to represent a File/Directory
o File f = new File(“c:/temp/myfile.txt”)
• OR
o File f = new File(“c:/temp”,”myfile.txt”)
36. www.sunilos.com 36
Summary (Cont.)
How to write text data char by char?
o FileWriter out = new FileWrite(f);
• OR
o FileWriter out = new FileWrite (“c:/temp/myfile.txt”);
o out.write(‘A’);
How to write text data line by line?
o PrintWriter pOut = new PrintWriter(out);
o pOut.println(“This is Line”);
37. www.sunilos.com 37
Summary (Cont.)
How to read text data char by char?
o FileReader in = new FileReader(f);
• OR
o FileReader in = new FileReader (“c:/temp/myfile.txt”);
o in.read();
How to read text data line by line?
o BufferedReader pIn= new BufferedReader(in);
o pIn.readLine();
o Scanner.readLine()
38. www.sunilos.com 38
Summary (Cont.)
How to write binary data byte by byte?
o FileOutputStream out = new FileOutputStream(f);
• OR
o FileOutputStream out = new FileOutputStream
(“c:/temp/myfile.txt”);
o out.write(1);
How to write binary data as byte array?
o BufferedOutputStream bOut = new BufferedOutputStream
(out);
o bOut.write(byte[]);
39. www.sunilos.com 39
Summary (Cont.)
How to read binary data byte by byte?
o FileInputStream in = new FileInputStream(f);
• OR
o FileInputStream in = new FileInputStream
(“c:/temp/myfile.txt”);
o in.read();
How to read binary data as byte array?
o BufferedInputStream bIn = new BufferedInputStream (in);
o byte[] buffer = new byte[256];
o bIn.read(buffer);
40. www.sunilos.com 40
Summary (Cont.)
How to write primitive data?
o FileOutputStream file = new
FileOutputStream("c:/primitivedata.dat");
o DataOutputStream out = new DataOutputStream(file);
How to Read primitive data?
o FileInputStream file = new
FileInputStream("c:/primitivedata.dat");
o DataInputStream in = new DataInputStream(file);
41. www.sunilos.com 41
Summary (Cont.)
How to persist/write an Object
o Make object Serialized
o FileOutputStream file = new FileOutputStream("c:/object.ser");
o ObjectOutputStream out = new ObjectOutputStream(file);
o out.writeObject(obj);
How to read an Object
o FileInputStream file = new FileInputStream("c:/object.ser");
o ObjectInputStream in = new ObjectInputStream(file);
o Object obj = in.readObject();
42. www.sunilos.com 42
Byte to Char Stream
How to convert byte stream into char stream
o Use InputStreamReader
o InputStreamReader inputStreamReader
= new InputStreamReader(System.in);
43. www.sunilos.com 43
IO Hierarchy - InputSteam
java.io.File
java.io.RandomAccessFile
java.io.InputStream
o java.io.ByteArrayInputStream
o java.io.FileInputStream
o java.io.FilterInputStream
• java.io.BufferedInputStream
• java.io.DataInputStream
• java.io.
LineNumberInputStream
o java.io.ObjectInputStream
o java.io.
StringBufferInputStream
java.io.OutputStream
o java.io.ByteArrayOutputStream
o java.io.FileOutputStream
o java.io.FilterOutputStream
• java.io.BufferedOutputStream
• java.io.DataOutputStream
• java.io.PrintStream
o java.io.ObjectOutputStream
44. www.sunilos.com 44
IO Hierarchy - Reader
java.io.Reader
o java.io.BufferedReader
• java.io.LineNumberReader
o java.io.CharArrayReader
o java.io.InputStreamReader
• java.io.FileReader
o java.io.StringReader
java.io.Writer
o java.io.BufferedWriter
o java.io.CharArrayWriter
o java.io.OutputStreamWriter
• java.io.FileWriter
o java.io.PrintWriter
o java.io.StringWriter