SlideShare a Scribd company logo
Java/J2EE Programming Training
Simple Java I/O
Page 1Classification: Restricted
Agenda
• Streams
• Using a stream
• Manipulating the input data
• Basics of the LineReader constructor
• The LineWriter class
• Flushing the buffer
• PrintWriter
• About FileDialogs
• Typical FileDialog window
• FileDialog constructors
• Useful FileDialog methods I
• Useful FileDialog methods II
• Serialization
• Conditions for serializability
• Writing objects to a file
Page 2Classification: Restricted
Streams
• All modern I/O is stream-based
• A stream is a connection to a source of data or to a destination for data
(sometimes both)
• An input stream may be associated with the keyboard
• An input stream or an output stream may be associated with a file
• Different streams have different characteristics:
• A file has a definite length, and therefore an end
• Keyboard input has no specific end
Page 3Classification: Restricted
How to do I/O
import java.io.*;
• Open the stream
• Use the stream (read, write, or both)
• Close the stream
Page 4Classification: Restricted
Why Java I/O is hard
• Java I/O is very powerful, with an overwhelming number of options
• Any given kind of I/O is not particularly difficult
• The trick is to find your way through the maze of possibilities
open
use
close
Page 5Classification: Restricted
Opening a stream
• There is data external to your program that you want to get, or you want to
put data somewhere outside your program
• When you open a stream, you are making a connection to that external
place
• Once the connection is made, you forget about the external place and just
use the stream
open
use
close
Page 6Classification: Restricted
Example of opening a stream
• A FileReader is a used to connect to a file that will be used for input:
FileReader fileReader =
new FileReader(fileName);
• The fileName specifies where the (external) file is to be found
• You never use fileName again; instead, you use fileReader
Page 7Classification: Restricted
Using a stream
• Some streams can be used only for input, others only for output, still others
for both
• Using a stream means doing input from it or output to it
• But it’s not usually that simple--you need to manipulate the data in some
way as it comes in or goes out
Page 8Classification: Restricted
Example of using a stream
int ch;
ch = fileReader.read( );
• The fileReader.read() method reads one character and returns it as an
integer, or -1 if there are no more characters to read
• The meaning of the integer depends on the file encoding (ASCII, Unicode,
other)
Page 9Classification: Restricted
Manipulating the input data
• Reading characters as integers isn’t usually what you want to do
• A BufferedReader will convert integers to characters; it can also read whole
lines
• The constructor for BufferedReader takes a FileReader parameter:
BufferedReader bufferedReader =
new BufferedReader(fileReader);
Page 10Classification: Restricted
Reading lines
String s;
s = bufferedReader.readLine( );
• A BufferedReader will return null if there is nothing more to read
Page 11Classification: Restricted
Closing
• A stream is an expensive resource
• There is a limit on the number of streams that you can have open at one
time
• You should not have more than one stream open on the same file
• You must close a stream before you can open it again
• Always close your streams!
Page 12Classification: Restricted
Text files
• Text (.txt) files are the simplest kind of files
• text files can be used by many different programs
• Formatted text files (such as .doc files) also contain binary formatting
information
• Only programs that “know the secret code” can make sense formatted text
files
• Compilers, in general, work only with text
Page 13Classification: Restricted
My LineReader class
class LineReader {
BufferedReader bufferedReader;
LineReader(String fileName) {...}
String readLine( ) {...}
void close( ) {...}
}
Page 14Classification: Restricted
Basics of the LineReader constructor
• Create a FileReader for the named file:
FileReader fileReader =
new FileReader(fileName);
• Use it as input to a BufferedReader:
BufferedReader bufferedReader =
new BufferedReader(fileReader);
• Use the BufferedReader; but first, we need to catch possible Exceptions
Page 15Classification: Restricted
The full LineReader constructor
LineReader(String fileName) {
FileReader fileReader = null;
try { fileReader = new FileReader(fileName); }
catch (FileNotFoundException e) {
System.err.println
("LineReader can't find input file: " + fileName);
e.printStackTrace( );
}
bufferedReader = new BufferedReader(fileReader);
}
Page 16Classification: Restricted
readLine
String readLine( ) {
try {
return bufferedReader.readLine( );
}
catch(IOException e) {
e.printStackTrace( );
}
return null;
}
Page 17Classification: Restricted
close
void close() {
try {
bufferedReader.close( );
}
catch(IOException e) { }
}
Page 18Classification: Restricted
How did I figure that out?
• I wanted to read lines from a file
• I found a readLine method in the BufferedReader class
• The constructor for BufferedReader takes a Reader as an argument
• An InputStreamReader is a kind of Reader
• A FileReader is a kind of InputStreamReader
Page 19Classification: Restricted
The LineWriter class
class LineWriter {
PrintWriter printWriter;
LineWriter(String fileName) {...}
void writeLine(String line) {...}
void close( ) {...}
}
Page 20Classification: Restricted
The constructor for LineWriter
LineWriter(String fileName) {
try {
printWriter =
new PrintWriter(
new FileOutputStream(fileName), true);
}
catch(Exception e) {
System.err.println("LineWriter can't " +
"use output file: " + fileName);
}
}
Page 21Classification: Restricted
Flushing the buffer
• When you put information into a buffered output stream, it goes into a
buffer
• The buffer may not be written out right away
• If your program crashes, you may not know how far it got before it crashed
• Flushing the buffer is forcing the information to be written out
Page 22Classification: Restricted
PrintWriter
• Buffers are automatically flushed when the program ends normally
• Usually it is your responsibility to flush buffers if the program does not end
normally
• PrintWriter can do the flushing for you
public PrintWriter(OutputStream out,
boolean autoFlush)
Page 23Classification: Restricted
writeLine
void writeLine(String line) {
printWriter.println(line);
}
Page 24Classification: Restricted
close
void close( ) {
printWriter.flush( );
try { printWriter.close( ); }
catch(Exception e) { }
}
Page 25Classification: Restricted
About FileDialogs
• The FileDialog class displays a window from which the user can select a file
• The FileDialog window is modal--the application cannot continue until it is
closed
• Only applications, not applets, can use a FileDialog; only applications can
access files
• Every FileDialog window is associated with a Frame
Page 26Classification: Restricted
Typical FileDialog window
Page 27Classification: Restricted
FileDialog constructors
• FileDialog(Frame f)
• Creates a FileDialog attached to Frame f
• FileDialog(Frame f, String title)
• Creates a FileDialog attached to Frame f, with the given title
• FileDialog(Frame f, String title, int type)
• Creates a FileDialog attached to Frame f, with the given title; the type
can be either FileDialog.LOAD or FileDialog.SAVE
Page 28Classification: Restricted
Useful FileDialog methods I
• String getDirectory()
• Returns the selected directory
• String getFile()
• Returns the name of the currently selected file, or null if no file is
selected
• int getMode()
• Returns either FileDialog.LOAD or FileDialog.SAVE, depending on what
the dialog is being used for
Page 29Classification: Restricted
Useful FileDialog methods II
• void setDirectory(String directory)
• Changes the current directory to directory
• void setFile(String fileName)
• Changes the current file to fileName
• void setMode(int mode)
• Sets the mode to either FileDialog.LOAD or FileDialog.SAVE
Page 30Classification: Restricted
Using a FileDialog
• Using a FileDialog isn’t difficult, but it is lengthy
• See my LineReader class (in the Encryption assignment) for a complete
example
Page 31Classification: Restricted
Serialization
• You can also read and write objects to files
• Object I/O goes by the awkward name of serialization
• Serialization in other languages can be very difficult, because objects may
contain references to other objects
• Java makes serialization (almost) easy
Page 32Classification: Restricted
Conditions for serializability
• If an object is to be serialized:
• The class must be declared as public
• The class must implement Serializable
• The class must have a no-argument constructor
• All fields of the class must be serializable: either primitive types or
serializable objects
Page 33Classification: Restricted
Implementing the Serializable interface
•To “implement” an interface means to
define all the methods declared by that
interface, but...
•The Serializable interface does not define
any methods!
•Question: What possible use is there for an
interface that does not declare any methods?
•Answer: Serializable is used as flag to tell Java it
needs to do extra work with this class
Page 34Classification: Restricted
Writing objects to a file
ObjectOutputStream objectOut =
new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream(fileName)));
objectOut.writeObject(serializableObject);
objectOut.close( );
Page 35Classification: Restricted
Reading objects from a file
ObjectInputStream objectIn =
new ObjectInputStream(
new BufferedInputStream(
new FileInputStream(fileName)));
myObject = (itsType)objectIn.readObject( );
objectIn.close( );
Page 36Classification: Restricted
What have I left out?
• Encrypted files, compressed files, files sent over internet connections, ...
• Exceptions! All I/O involves Exceptions!
• try { statements involving I/O }
catch (IOException e) {
e.printStackTrace ( );
}
Page 37Classification: Restricted
Thank You

More Related Content

PDF
Unit 4 - HTTP and the Web Services - IT
Deepraj Bhujel
 
PPTX
Web technology Unit-II Part A
SSN College of Engineering, Kalavakkam
 
PPT
ALA Interoperability
spacecowboyian
 
PPTX
Analysis of malicious pdf
Raghunath G
 
PPT
Io stream
Parthipan Parthi
 
PPTX
Web technology Unit-II Part-C
SSN College of Engineering, Kalavakkam
 
PPTX
CSV File Manipulation
primeteacher32
 
PPTX
Latex intro s_dutta_v2
SoumyoDutta
 
Unit 4 - HTTP and the Web Services - IT
Deepraj Bhujel
 
Web technology Unit-II Part A
SSN College of Engineering, Kalavakkam
 
ALA Interoperability
spacecowboyian
 
Analysis of malicious pdf
Raghunath G
 
Io stream
Parthipan Parthi
 
Web technology Unit-II Part-C
SSN College of Engineering, Kalavakkam
 
CSV File Manipulation
primeteacher32
 
Latex intro s_dutta_v2
SoumyoDutta
 

What's hot (19)

PPTX
Web technology unit I - Part B
SSN College of Engineering, Kalavakkam
 
PDF
Flexible Indexing in Lucene 4.0
Lucidworks (Archived)
 
PPTX
Dom parser
sana mateen
 
PDF
Reimagining Serials handout: BIBFRAME Exercise
NASIG
 
PPTX
Xml dom
sana mateen
 
DOCX
paradise city
Chandrashekar Jinka
 
PPTX
Avro intro
Randy Abernethy
 
PDF
CenitHub Presentations | 3- Translator
Miguel Sancho
 
PPTX
Understanding Character Encodings
Mobisoft Infotech
 
PPT
Understanding XML DOM
Om Vikram Thapa
 
PDF
Content Registration - Crossref LIVE Hannover
Crossref
 
PDF
Experience protocol buffer on android
Richard Chang
 
PPTX
Xml processors
Saurav Mawandia
 
PPT
Class 1 - World Wide Web Introduction
Ahmed Swilam
 
PPT
Intro. to the internet and web
dofirfauzi1302
 
PPTX
Assets, files, and data parsing
Aly Arman
 
PDF
Introduction to libre « fulltext » technology
Robert Viseur
 
PPTX
XML
Kamal Acharya
 
Web technology unit I - Part B
SSN College of Engineering, Kalavakkam
 
Flexible Indexing in Lucene 4.0
Lucidworks (Archived)
 
Dom parser
sana mateen
 
Reimagining Serials handout: BIBFRAME Exercise
NASIG
 
Xml dom
sana mateen
 
paradise city
Chandrashekar Jinka
 
Avro intro
Randy Abernethy
 
CenitHub Presentations | 3- Translator
Miguel Sancho
 
Understanding Character Encodings
Mobisoft Infotech
 
Understanding XML DOM
Om Vikram Thapa
 
Content Registration - Crossref LIVE Hannover
Crossref
 
Experience protocol buffer on android
Richard Chang
 
Xml processors
Saurav Mawandia
 
Class 1 - World Wide Web Introduction
Ahmed Swilam
 
Intro. to the internet and web
dofirfauzi1302
 
Assets, files, and data parsing
Aly Arman
 
Introduction to libre « fulltext » technology
Robert Viseur
 
Ad

Similar to Java I/O (20)

PPSX
Java IO, Serialization
Hitesh-Java
 
PPTX
Session 22 - Java IO, Serialization
PawanMM
 
PPTX
Session 23 - JDBC
PawanMM
 
PPSX
JDBC
Hitesh-Java
 
PPT
Javaio
Jaya Jeswani
 
PPT
Javaio
Jaya Jeswani
 
PPTX
IOStream.pptx
HindAlmisbahi
 
PDF
CSE3146-ADV JAVA M2.pdf
VithalReddy3
 
PDF
11_Str11_Streams.11_Streams.11_Streams.11_Streams.11_Streams.11_Streams.eams.pdf
hungvidien123
 
PDF
Basic i/o & file handling in java
JayasankarPR2
 
PPTX
L21 io streams
teach4uin
 
PDF
Java IO
UTSAB NEUPANE
 
PPT
Java Input Output and File Handling
Sunil OS
 
PDF
Programming language JAVA Input output opearations
2025183005
 
PPTX
Java I/O
Jayant Dalvi
 
PPTX
IO Programming.pptx all informatiyon ppt
nandinimakwana22cse
 
PDF
Java Day-6
People Strategists
 
PPTX
Java Input Output (java.io.*)
Om Ganesh
 
PPTX
I/O Streams
Ravi Chythanya
 
Java IO, Serialization
Hitesh-Java
 
Session 22 - Java IO, Serialization
PawanMM
 
Session 23 - JDBC
PawanMM
 
Javaio
Jaya Jeswani
 
Javaio
Jaya Jeswani
 
IOStream.pptx
HindAlmisbahi
 
CSE3146-ADV JAVA M2.pdf
VithalReddy3
 
11_Str11_Streams.11_Streams.11_Streams.11_Streams.11_Streams.11_Streams.eams.pdf
hungvidien123
 
Basic i/o & file handling in java
JayasankarPR2
 
L21 io streams
teach4uin
 
Java IO
UTSAB NEUPANE
 
Java Input Output and File Handling
Sunil OS
 
Programming language JAVA Input output opearations
2025183005
 
Java I/O
Jayant Dalvi
 
IO Programming.pptx all informatiyon ppt
nandinimakwana22cse
 
Java Day-6
People Strategists
 
Java Input Output (java.io.*)
Om Ganesh
 
I/O Streams
Ravi Chythanya
 
Ad

More from DeeptiJava (13)

PPT
Generating the Server Response: HTTP Status Codes
DeeptiJava
 
PPTX
Java Generics
DeeptiJava
 
PPTX
Java Collection
DeeptiJava
 
PPTX
Java Exception Handling
DeeptiJava
 
PPTX
Java OOPs
DeeptiJava
 
PPTX
Java Access Specifier
DeeptiJava
 
PPTX
Java JDBC
DeeptiJava
 
PPTX
Java Thread
DeeptiJava
 
PPTX
Java Inner Class
DeeptiJava
 
PPT
JSP Part 2
DeeptiJava
 
PPT
JSP Part 1
DeeptiJava
 
PPT
Java Hibernate Basics
DeeptiJava
 
PPTX
Introduction to Java
DeeptiJava
 
Generating the Server Response: HTTP Status Codes
DeeptiJava
 
Java Generics
DeeptiJava
 
Java Collection
DeeptiJava
 
Java Exception Handling
DeeptiJava
 
Java OOPs
DeeptiJava
 
Java Access Specifier
DeeptiJava
 
Java JDBC
DeeptiJava
 
Java Thread
DeeptiJava
 
Java Inner Class
DeeptiJava
 
JSP Part 2
DeeptiJava
 
JSP Part 1
DeeptiJava
 
Java Hibernate Basics
DeeptiJava
 
Introduction to Java
DeeptiJava
 

Recently uploaded (20)

PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Architecture of the Future (09152021)
EdwardMeyman
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Architecture of the Future (09152021)
EdwardMeyman
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 

Java I/O

  • 2. Page 1Classification: Restricted Agenda • Streams • Using a stream • Manipulating the input data • Basics of the LineReader constructor • The LineWriter class • Flushing the buffer • PrintWriter • About FileDialogs • Typical FileDialog window • FileDialog constructors • Useful FileDialog methods I • Useful FileDialog methods II • Serialization • Conditions for serializability • Writing objects to a file
  • 3. Page 2Classification: Restricted Streams • All modern I/O is stream-based • A stream is a connection to a source of data or to a destination for data (sometimes both) • An input stream may be associated with the keyboard • An input stream or an output stream may be associated with a file • Different streams have different characteristics: • A file has a definite length, and therefore an end • Keyboard input has no specific end
  • 4. Page 3Classification: Restricted How to do I/O import java.io.*; • Open the stream • Use the stream (read, write, or both) • Close the stream
  • 5. Page 4Classification: Restricted Why Java I/O is hard • Java I/O is very powerful, with an overwhelming number of options • Any given kind of I/O is not particularly difficult • The trick is to find your way through the maze of possibilities open use close
  • 6. Page 5Classification: Restricted Opening a stream • There is data external to your program that you want to get, or you want to put data somewhere outside your program • When you open a stream, you are making a connection to that external place • Once the connection is made, you forget about the external place and just use the stream open use close
  • 7. Page 6Classification: Restricted Example of opening a stream • A FileReader is a used to connect to a file that will be used for input: FileReader fileReader = new FileReader(fileName); • The fileName specifies where the (external) file is to be found • You never use fileName again; instead, you use fileReader
  • 8. Page 7Classification: Restricted Using a stream • Some streams can be used only for input, others only for output, still others for both • Using a stream means doing input from it or output to it • But it’s not usually that simple--you need to manipulate the data in some way as it comes in or goes out
  • 9. Page 8Classification: Restricted Example of using a stream int ch; ch = fileReader.read( ); • The fileReader.read() method reads one character and returns it as an integer, or -1 if there are no more characters to read • The meaning of the integer depends on the file encoding (ASCII, Unicode, other)
  • 10. Page 9Classification: Restricted Manipulating the input data • Reading characters as integers isn’t usually what you want to do • A BufferedReader will convert integers to characters; it can also read whole lines • The constructor for BufferedReader takes a FileReader parameter: BufferedReader bufferedReader = new BufferedReader(fileReader);
  • 11. Page 10Classification: Restricted Reading lines String s; s = bufferedReader.readLine( ); • A BufferedReader will return null if there is nothing more to read
  • 12. Page 11Classification: Restricted Closing • A stream is an expensive resource • There is a limit on the number of streams that you can have open at one time • You should not have more than one stream open on the same file • You must close a stream before you can open it again • Always close your streams!
  • 13. Page 12Classification: Restricted Text files • Text (.txt) files are the simplest kind of files • text files can be used by many different programs • Formatted text files (such as .doc files) also contain binary formatting information • Only programs that “know the secret code” can make sense formatted text files • Compilers, in general, work only with text
  • 14. Page 13Classification: Restricted My LineReader class class LineReader { BufferedReader bufferedReader; LineReader(String fileName) {...} String readLine( ) {...} void close( ) {...} }
  • 15. Page 14Classification: Restricted Basics of the LineReader constructor • Create a FileReader for the named file: FileReader fileReader = new FileReader(fileName); • Use it as input to a BufferedReader: BufferedReader bufferedReader = new BufferedReader(fileReader); • Use the BufferedReader; but first, we need to catch possible Exceptions
  • 16. Page 15Classification: Restricted The full LineReader constructor LineReader(String fileName) { FileReader fileReader = null; try { fileReader = new FileReader(fileName); } catch (FileNotFoundException e) { System.err.println ("LineReader can't find input file: " + fileName); e.printStackTrace( ); } bufferedReader = new BufferedReader(fileReader); }
  • 17. Page 16Classification: Restricted readLine String readLine( ) { try { return bufferedReader.readLine( ); } catch(IOException e) { e.printStackTrace( ); } return null; }
  • 18. Page 17Classification: Restricted close void close() { try { bufferedReader.close( ); } catch(IOException e) { } }
  • 19. Page 18Classification: Restricted How did I figure that out? • I wanted to read lines from a file • I found a readLine method in the BufferedReader class • The constructor for BufferedReader takes a Reader as an argument • An InputStreamReader is a kind of Reader • A FileReader is a kind of InputStreamReader
  • 20. Page 19Classification: Restricted The LineWriter class class LineWriter { PrintWriter printWriter; LineWriter(String fileName) {...} void writeLine(String line) {...} void close( ) {...} }
  • 21. Page 20Classification: Restricted The constructor for LineWriter LineWriter(String fileName) { try { printWriter = new PrintWriter( new FileOutputStream(fileName), true); } catch(Exception e) { System.err.println("LineWriter can't " + "use output file: " + fileName); } }
  • 22. Page 21Classification: Restricted Flushing the buffer • When you put information into a buffered output stream, it goes into a buffer • The buffer may not be written out right away • If your program crashes, you may not know how far it got before it crashed • Flushing the buffer is forcing the information to be written out
  • 23. Page 22Classification: Restricted PrintWriter • Buffers are automatically flushed when the program ends normally • Usually it is your responsibility to flush buffers if the program does not end normally • PrintWriter can do the flushing for you public PrintWriter(OutputStream out, boolean autoFlush)
  • 24. Page 23Classification: Restricted writeLine void writeLine(String line) { printWriter.println(line); }
  • 25. Page 24Classification: Restricted close void close( ) { printWriter.flush( ); try { printWriter.close( ); } catch(Exception e) { } }
  • 26. Page 25Classification: Restricted About FileDialogs • The FileDialog class displays a window from which the user can select a file • The FileDialog window is modal--the application cannot continue until it is closed • Only applications, not applets, can use a FileDialog; only applications can access files • Every FileDialog window is associated with a Frame
  • 28. Page 27Classification: Restricted FileDialog constructors • FileDialog(Frame f) • Creates a FileDialog attached to Frame f • FileDialog(Frame f, String title) • Creates a FileDialog attached to Frame f, with the given title • FileDialog(Frame f, String title, int type) • Creates a FileDialog attached to Frame f, with the given title; the type can be either FileDialog.LOAD or FileDialog.SAVE
  • 29. Page 28Classification: Restricted Useful FileDialog methods I • String getDirectory() • Returns the selected directory • String getFile() • Returns the name of the currently selected file, or null if no file is selected • int getMode() • Returns either FileDialog.LOAD or FileDialog.SAVE, depending on what the dialog is being used for
  • 30. Page 29Classification: Restricted Useful FileDialog methods II • void setDirectory(String directory) • Changes the current directory to directory • void setFile(String fileName) • Changes the current file to fileName • void setMode(int mode) • Sets the mode to either FileDialog.LOAD or FileDialog.SAVE
  • 31. Page 30Classification: Restricted Using a FileDialog • Using a FileDialog isn’t difficult, but it is lengthy • See my LineReader class (in the Encryption assignment) for a complete example
  • 32. Page 31Classification: Restricted Serialization • You can also read and write objects to files • Object I/O goes by the awkward name of serialization • Serialization in other languages can be very difficult, because objects may contain references to other objects • Java makes serialization (almost) easy
  • 33. Page 32Classification: Restricted Conditions for serializability • If an object is to be serialized: • The class must be declared as public • The class must implement Serializable • The class must have a no-argument constructor • All fields of the class must be serializable: either primitive types or serializable objects
  • 34. Page 33Classification: Restricted Implementing the Serializable interface •To “implement” an interface means to define all the methods declared by that interface, but... •The Serializable interface does not define any methods! •Question: What possible use is there for an interface that does not declare any methods? •Answer: Serializable is used as flag to tell Java it needs to do extra work with this class
  • 35. Page 34Classification: Restricted Writing objects to a file ObjectOutputStream objectOut = new ObjectOutputStream( new BufferedOutputStream( new FileOutputStream(fileName))); objectOut.writeObject(serializableObject); objectOut.close( );
  • 36. Page 35Classification: Restricted Reading objects from a file ObjectInputStream objectIn = new ObjectInputStream( new BufferedInputStream( new FileInputStream(fileName))); myObject = (itsType)objectIn.readObject( ); objectIn.close( );
  • 37. Page 36Classification: Restricted What have I left out? • Encrypted files, compressed files, files sent over internet connections, ... • Exceptions! All I/O involves Exceptions! • try { statements involving I/O } catch (IOException e) { e.printStackTrace ( ); }