SlideShare a Scribd company logo
Java Input/Output
11 April 2013	

 OSU CSE	

 1
Overview
•  The Java I/O (Input/Output) package
java.io contains a group of interfaces
and classes similar to the OSU CSE
components’ SimpleReader and
SimpleWriter component families
– Except that java.io is far more general,
configurable, and powerful (and messy)
– Hence, the names SimpleReader and
SimpleWriter
11 April 2013	

 OSU CSE	

 2
I/O Streams
•  An input/output stream is a (conceptually
not necessarily finite) series of data items
– An input stream is a “flow” of data items from
a source to a program
•  The program reads from the source (or from the
stream)
– An output stream is a “flow” of data items
from a program to a destination
•  The program writes to the destination (or to the
stream)
11 April 2013	

 OSU CSE	

 3
Input Streams
11 April 2013	

 OSU CSE	

 4	

source
input stream program
single data item
Input Streams
11 April 2013	

 OSU CSE	

 5	

source
input stream program
single data item
Source may be the keyboard, a file
on disk, a physical device, another
program, even an array or String
in the same program.
Output Streams
11 April 2013	

 OSU CSE	

 6	

program
single data item
desti-
nation
output stream
Output Streams
11 April 2013	

 OSU CSE	

 7	

program
single data item
desti-
nation
output stream
Destination may be the console
window, a file on disk, a physical
device, another program, even an array
or String in the same program.
Part I: Beginner’s Guide
•  This part is essentially a “how-to” guide for
using java.io that assumes knowledge
of the OSU CSE components’
SimpleReader and SimpleWriter
component families
11 April 2013	

 OSU CSE	

 8
Keyboard Input (SimpleReader)
•  Here’s some code in main to read input
from the keyboard, using SimpleReader:
public static void main(String[] args) {
SimpleReader input = new SimpleReader1L();
String s = input.nextLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 9
Keyboard Input (SimpleReader)
•  Here’s some code in main to read input
from the keyboard, using SimpleReader:
public static void main(String[] args) {
SimpleReader input = new SimpleReader1L();
String s = input.nextLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 10	

Advice (except for the simplest
programs): to guard against the user
entering “unexpected” input, read a line
at a time into a String and then parse
it to see whether it looks like expected.
Overview of java.io Input
11 April 2013	

 OSU CSE	

 11	

InputStream-
Reader
Readable
Reader
Closeable
FileReader
BufferedReader
There are more classes
and interfaces not
discussed here!
Keyboard Input (java.io)
•  Here’s some code in main to read input
from the keyboard, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 12
Keyboard Input (java.io)
•  Here’s some code in main to read input
from the keyboard, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 13	

Some methods in java.io throw
exceptions (discussed later) under
certain circumstances, and you either
need to catch them or let them
propagate “up the call chain”, like this.
Keyboard Input (java.io)
•  Here’s some code in main to read input
from the keyboard, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 14	

The variable System.in is a Java
standard stream (discussed later), so
you may use it without declaring it; but it
is a byte stream (discussed later), so
you want to wrap it ...
Keyboard Input (java.io)
•  Here’s some code in main to read input
from the keyboard, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 15	

... in a character stream (discussed
later) like this ...
Keyboard Input (java.io)
•  Here’s some code in main to read input
from the keyboard, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 16	

... and then you want to wrap that
character stream in a buffered stream
(discussed later), like this, so ...
Keyboard Input (java.io)
•  Here’s some code in main to read input
from the keyboard, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 17	

... you can read one line at a time into a
String, like this.
Keyboard Input (java.io)
•  Here’s some code in main to read input
from the keyboard, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 18	

The declared types of variables when
you use java.io are class types
rather than interface types.
Keyboard Input (java.io)to
•  Here’s some code in main to read input
from the keyboard, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 19	

This technique of slightly extending
features or capabilities of an object by
wrapping it inside another object is a
popular object-oriented design pattern
called the decorator pattern.
An Alternative (java.util)
•  An attractive alternative to using
java.io.BufferedReader is to use
java.util.Scanner
– Important difference: no IOExceptions can
be raised, so you don’t need to worry about
catching or throwing them
– Features for parsing input are powerful, e.g.,
the use of regular expressions to describe
delimiters between data items
11 April 2013	

 OSU CSE	

 20
An Alternative (java.util)
•  Here’s some code in main to read input
from the keyboard, using Scanner:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.nextLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 21
An Alternative (java.util)
•  Here’s some code in main to read input
from the keyboard, using Scanner:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.nextLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 22	

Now, main does not declare that it
throws IOException; in this sense it
is similar to using SimpleReader.
An Alternative (java.util)
•  Here’s some code in main to read input
from the keyboard, using Scanner:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.nextLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 23	

Notice that initialization does not involve
layers of wrapping of one object inside
another; Scanner also has different
constructors so it can be used with files.
An Alternative (java.util)
•  Here’s some code in main to read input
from the keyboard, using Scanner:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.nextLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 24	

The method for reading a line into a
String has a different name than for
BufferedReader: it is nextLine (like
SimpleReader).
End-of-Stream (SimpleReader)
public static void main(String[] args) {
SimpleReader input = new SimpleReader1L();
while (!input.atEOS()) {
s = input.nextLine();
...
}
...
input.close();
}
11 April 2013	

 OSU CSE	

 25
End-of-Stream (SimpleReader)
public static void main(String[] args) {
SimpleReader input = new SimpleReader1L();
while (!input.atEOS()) {
s = input.nextLine();
...
}
...
input.close();
}
11 April 2013	

 OSU CSE	

 26	

SimpleReader has a method to report “at
end-of-stream”, and it can tell you this before
you read “past the end of the input stream”;
similarly, Scanner has method hasNext.
End-of-Stream (java.io)
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
while (s != null) {
...
s = input.readLine();
}
...
input.close();
}
11 April 2013	

 OSU CSE	

 27
End-of-Stream (java.io)
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
while (s != null) {
...
s = input.readLine();
}
...
input.close();
}
11 April 2013	

 OSU CSE	

 28	

BufferedReader has no method to
detect when you cannot read any more
input, so you can check it only after you
try to read “past the end of the stream”.
End-of-Stream (java.io)
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new InputStreamReader(System.in));
String s = input.readLine();
while (s != null) {
...
s = input.readLine();
}
...
input.close();
}
11 April 2013	

 OSU CSE	

 29	

Before checking again,
you must try to read
another line.
File Input (SimpleReader)
•  Here’s some code in main to read input
from a file, using SimpleReader:
public static void main(String[] args) {
SimpleReader input =
new SimpleReader1L("data/test.txt");
String s = input.nextLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 30
File Input (SimpleReader)
•  Here’s some code in main to read input
from a file, using SimpleReader:
public static void main(String[] args) {
SimpleReader input =
new SimpleReader1L("data/test.txt");
String s = input.nextLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 31	

SimpleReader has a constructor from
a String, which is the name of the file
you want to read from.
File Input (java.io)
•  Here’s some code in main to read input
from a file, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new FileReader("data/test.txt"));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 32
File Input (java.io)
•  Here’s some code in main to read input
from a file, using java.io:
public static void main(String[] args)
throws IOException {
BufferedReader input =
new BufferedReader(
new FileReader("data/test.txt"));
String s = input.readLine();
...
input.close();
}
11 April 2013	

 OSU CSE	

 33	

Now, you wrap a BufferedReader
around a FileReader (which has a
constructor from a String, which is the
name of the file you want to read from).
Independence From Source
•  With SimpleReader, BufferedReader,
and Scanner used as shown, the source
is identified in a constructor call, and
subsequent code to read data is
independent of the source
– This is a really handy feature in many
software maintenance situations
– But notice: methods differ between
BufferedReader and the other two!
11 April 2013	

 OSU CSE	

 34
Console Output (SimpleWriter)
•  Here’s some code in main to write output
to the console, using SimpleWriter:
public static void main(String[] args) {
SimpleWriter output = new SimpleWriter1L();
output.print("foo");
output.println(" and bar");
...
output.close();
}
11 April 2013	

 OSU CSE	

 35
Console Output (SimpleWriter)
•  Here’s some code in main to write output
to the console, using SimpleWriter:
public static void main(String[] args) {
SimpleWriter output = new SimpleWriter1L();
output.print("foo");
output.println(" and bar");
...
output.close();
}
11 April 2013	

 OSU CSE	

 36	

Both print and println are available,
and the latter should be used to output
the line separator string for the current
“platform” (i.e., the system the Java
program is running on).
Overview of java.io Output
11 April 2013	

 OSU CSE	

 37	

OutputStream-
Writer
Flushable
Writer
Closeable
FileWriter
BufferedWriter
Appendable
PrintWriter
There are more classes
and interfaces not
discussed here!
Console Output (java.io)
•  Here’s some code in main to write output
to the console, using java.io:
public static void main(String[] args) {
...
System.out.print("foo");
System.out.println(" and bar");
...
}
11 April 2013	

 OSU CSE	

 38
Console Output (java.io)
•  Here’s some code in main to write output
to the console, using java.io:
public static void main(String[] args) {
...
System.out.print("foo");
System.out.println(" and bar");
...
}
11 April 2013	

 OSU CSE	

 39	

System.out is another Java standard
stream (discussed later), which you
neither declare nor close; both print
and println are available.
Console Output (java.io)
•  Here’s some code in main to write output
to the console, using java.io:
public static void main(String[] args) {
...
System.out.print("foo");
System.out.println(" and bar");
...
}
11 April 2013	

 OSU CSE	

 40	

It is fine to use System.out for console
output, but there are potential problems
using (unwrapped) System.in for
keyboard input.
File Output (SimpleWriter)
•  Here’s some code in main to write output
to a file, using SimpleWriter:
public static void main(String[] args) {
SimpleWriter output =
new SimpleWriter1L("data/test.txt");
output.print("foo");
output.println(" and bar");
...
output.close();
}
11 April 2013	

 OSU CSE	

 41
File Output (SimpleWriter)
•  Here’s some code in main to write output
to a file, using SimpleWriter:
public static void main(String[] args) {
SimpleWriter output =
new SimpleWriter1L("data/test.txt");
output.print("foo");
output.println(" and bar");
...
output.close();
}
11 April 2013	

 OSU CSE	

 42	

SimpleWriter has a constructor from
a String, which is the name of the file
you want to write to.
File Output (java.io)
•  Here’s some code in main to write output
to a file, using java.io:
public static void main(String[] args)
throws IOException {
PrintWriter output =
new PrintWriter(
new BufferedWriter (
new FileWriter("data/test.txt")));
output.print("foo");
output.println(" and bar");
...
output.close();
}
11 April 2013	

 OSU CSE	

 43
File Output (java.io)
•  Here’s some code in main to write output
to a file, using java.io:
public static void main(String[] args)
throws IOException {
PrintWriter output =
new PrintWriter(
new BufferedWriter (
new FileWriter("data/test.txt")));
output.print("foo");
output.println(" and bar");
...
output.close();
}
11 April 2013	

 OSU CSE	

 44	

PrintWriter is needed for convenient
output, and is added as yet another
wrapper—to get print and println.
Independence From Destination
•  With SimpleWriter, System.out, and
PrintWriter used as shown, the
destination is identified in a constructor
call, and subsequent code to write data is
independent of the destination
– This is a really handy feature in many
software maintenance situations
– Unlike input, methods (print and println)
for all three have same names and behaviors
11 April 2013	

 OSU CSE	

 45
Part II: Some Details
•  There are way too many details about
java.io to cover here; see the Javadoc
and the Java Tutorials trail on “Basic I/O”
•  A few details previously promised ...
11 April 2013	

 OSU CSE	

 46
IOException
•  A general discussion of exceptions in
Java is to come later still, but for now…
•  A number of java.io constructors and
methods might throw (raise) an
IOException
– Examples: files to be used as sources/
destinations may not exist, may not be
readable and/or writeable by the user of the
program, etc.
11 April 2013	

 OSU CSE	

 47
Try-Catch
•  As an alternative to letting an exception
propagate “up the call chain” to the client
(as in the earlier examples), you may deal
with an IOException by catching
(handling) it, e.g.:
– Report that there has been an I/O error and
exit “gracefully”
– Try to recover from it (which is usually much
harder)
11 April 2013	

 OSU CSE	

 48
Example
•  Here’s the overall structure of an example
main in a simple application that reads
input from a file, using java.io:
public static void main(String[] args) {
// Code to open file
// Code to read from file
// Code to close file
}
11 April 2013	

 OSU CSE	

 49
Example: Opening a File
public static void main(String[] args) {
BufferedReader input;
try {
input = new BufferedReader(
new FileReader("data/test.txt"));
} catch (IOException e) {
System.err.println("Error opening file");
return;
}
// Code to read from file
// Code to close file
}
11 April 2013	

 OSU CSE	

 50
Example: Opening a File
public static void main(String[] args) {
BufferedReader input;
try {
input = new BufferedReader(
new FileReader("data/test.txt"));
} catch (IOException e) {
System.err.println("Error opening file");
return;
}
// Code to read from file
// Code to close file
}
11 April 2013	

 OSU CSE	

 51	

Now, main does not declare that it
throws IOException if it (always)
catches the exception.
Example: Opening a File
public static void main(String[] args) {
BufferedReader input;
try {
input = new BufferedReader(
new FileReader("data/test.txt"));
} catch (IOException e) {
System.err.println("Error opening file");
return;
}
// Code to read from file
// Code to close file
}
11 April 2013	

 OSU CSE	

 52	

This variable must be declared (but not
initialized) here, so it is in scope later
where the code reads from the file—if the
file is opened successfully.
Example: Opening a File
public static void main(String[] args) {
BufferedReader input;
try {
input = new BufferedReader(
new FileReader("data/test.txt"));
} catch (IOException e) {
System.err.println("Error opening file");
return;
}
// Code to read from file
// Code to close file
}
11 April 2013	

 OSU CSE	

 53	

The try block contains the code that
might throw an IOException ...
Example: Opening a File
public static void main(String[] args) {
BufferedReader input;
try {
input = new BufferedReader(
new FileReader("data/test.txt"));
} catch (IOException e) {
System.err.println("Error opening file");
return;
}
// Code to read from file
// Code to close file
}
11 April 2013	

 OSU CSE	

 54	

... which this constructor might throw,
e.g., if the file does not exist.
Example: Opening a File
public static void main(String[] args) {
BufferedReader input;
try {
input = new BufferedReader(
new FileReader("data/test.txt"));
} catch (IOException e) {
System.err.println("Error opening file");
return;
}
// Code to read from file
// Code to close file
}
11 April 2013	

 OSU CSE	

 55	

The catch block states the exception it
handles, and is executed iff code in the
try block throws that exception (which is
called e in the catch block).
Example: Opening a File
public static void main(String[] args) {
BufferedReader input;
try {
input = new BufferedReader(
new FileReader("data/test.txt"));
} catch (IOException e) {
System.err.println("Error opening file");
return;
}
// Code to read from file
// Code to close file
}
11 April 2013	

 OSU CSE	

 56	

Here, the code prints an error message
to System.err, another Java standard
stream (discussed later), and “aborts”
main by returning from it.
Example: Opening a File
public static void main(String[] args) {
BufferedReader input;
try {
input = new BufferedReader(
new FileReader("data/test.txt"));
} catch (IOException e) {
System.err.println("Error opening file");
return;
}
// Code to read from file
// Code to close file
}
11 April 2013	

 OSU CSE	

 57	

In either case (even after the catch block,
if it did not return as it does here),
execution proceeds with the next
statement.
Example: Reading From a File
public static void main(String[] args) {
// Code to open file
try {
String s = input.readLine();
while (s != null) {
...
s = input.readLine();
}
} catch (IOException e) {
System.err.println("Error reading from file");
}
// Code to close file
}
11 April 2013	

 OSU CSE	

 58
Example: Reading From a File
public static void main(String[] args) {
// Code to open file
try {
String s = input.readLine();
while (s != null) {
...
s = input.readLine();
}
} catch (IOException e) {
System.err.println("Error reading from file");
}
// Code to close file
}
11 April 2013	

 OSU CSE	

 59	

We need this try-catch because the
method readLine might throw an
IOException.
Example: Reading From a File
public static void main(String[] args) {
// Code to open file
try {
String s = input.readLine();
while (s != null) {
...
s = input.readLine();
}
} catch (IOException e) {
System.err.println("Error reading from file");
}
// Code to close file
}
11 April 2013	

 OSU CSE	

 60	

As before, even after the catch block
(which in this case does not end with a
return), execution proceeds with the
next statement.
Example: Closing a File
public static void main(String[] args) {
// Code to open file
// Code to read from file
try {
input.close();
} catch (IOException e) {
System.err.println("Error closing file");
}
}
11 April 2013	

 OSU CSE	

 61
Example: Closing a File
public static void main(String[] args) {
// Code to open file
// Code to read from file
try {
input.close();
} catch (IOException e) {
System.err.println("Error closing file");
}
}
11 April 2013	

 OSU CSE	

 62	

We need this try-catch because even the
method close might throw an
IOException.
The Standard Streams
•  The utility class System in java.lang
declares three standard streams:
– System.in
– System.out
– System.err
•  You do not declare, open, or close these
streams; but you can always use them
without worrying about exceptions
11 April 2013	

 OSU CSE	

 63
The Standard Streams
•  The utility class System in java.lang
declares three standard streams:
– System.in
– System.out
– System.err
•  You do not declare, open, or close these
streams; but you can always use them
without worrying about exceptions
11 April 2013	

 OSU CSE	

 64	

A utility class is a class that cannot be
instantiated, i.e., there is no public
constructor; it is not a type, so you
cannot create “an object of that type”.
The Standard Streams
•  The utility class System in java.lang
declares three standard streams:
– System.in
– System.out
– System.err
•  You do not declare, open, or close these
streams; but you can always use them
without worrying about exceptions
11 April 2013	

 OSU CSE	

 65	

System.err is intended for
error messages; System.out is
intended for normal output.
Byte and Character Streams
•  Java has two categories of streams:
– Byte streams are streams of 8-bit bytes
•  This is a kind of low-level I/O that you rarely need
– Character streams are streams of Unicode
characters
•  This is preferred for text I/O because it accounts
for the “local” character set and supports
internationalization with little additional effort
•  Best practice is to use character streams
with textual I/O
11 April 2013	

 OSU CSE	

 66
Buffered Streams
•  Buffered streams minimize disk access
for reading/writing files, and generally
have performance advantages over
unbuffered streams
•  Best practice is to “wrap” input and output
character streams to create buffered
versions
– This is done with BufferedReader and
BufferedWriter, as seen earlier
11 April 2013	

 OSU CSE	

 67
Files and Paths
•  The File class (an original part of Java)
and the Path interface (new in Java 1.7)
allow you to manipulate directories and
files and the “paths” to them in the file
system, e.g.:
– Check file existence and permissions, create
files and set permissions, delete files, etc.
•  See the Java Tutorials: Basic I/O and the
Java libraries’ Javadoc for details
11 April 2013	

 OSU CSE	

 68
Resources
•  The Java Tutorials: Basic I/O
–  http://docs.oracle.com/javase/tutorial/essential/io/index.html
11 April 2013	

 OSU CSE	

 69

More Related Content

What's hot (20)

Oodp mod4
Oodp mod4Oodp mod4
Oodp mod4
 
Java IO Package and Streams
Java IO Package and StreamsJava IO Package and Streams
Java IO Package and Streams
 
PHP - Introduction to Advanced SQL
PHP - Introduction to Advanced SQLPHP - Introduction to Advanced SQL
PHP - Introduction to Advanced SQL
 
java.io - streams and files
java.io - streams and filesjava.io - streams and files
java.io - streams and files
 
Java Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and StreamsJava Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and Streams
 
Taking User Input in Java
Taking User Input in JavaTaking User Input in Java
Taking User Input in Java
 
Java I/o streams
Java I/o streamsJava I/o streams
Java I/o streams
 
Input output streams
Input output streamsInput output streams
Input output streams
 
Java I/O
Java I/OJava I/O
Java I/O
 
Java Input Output (java.io.*)
Java Input Output (java.io.*)Java Input Output (java.io.*)
Java Input Output (java.io.*)
 
Core Java Programming Language (JSE) : Chapter XI - Console I/O and File I/O
Core Java Programming Language (JSE) : Chapter XI - Console I/O and File I/OCore Java Programming Language (JSE) : Chapter XI - Console I/O and File I/O
Core Java Programming Language (JSE) : Chapter XI - Console I/O and File I/O
 
Java platform
Java platformJava platform
Java platform
 
Java Streams
Java StreamsJava Streams
Java Streams
 
Various io stream classes .47
Various io stream classes .47Various io stream classes .47
Various io stream classes .47
 
Io streams
Io streamsIo streams
Io streams
 
Java IO
Java IOJava IO
Java IO
 
Chapter 12 - File Input and Output
Chapter 12 - File Input and OutputChapter 12 - File Input and Output
Chapter 12 - File Input and Output
 
What is java input and output stream?
What is java input and output stream?What is java input and output stream?
What is java input and output stream?
 
Sq linjection
Sq linjectionSq linjection
Sq linjection
 
Byte stream classes.49
Byte stream classes.49Byte stream classes.49
Byte stream classes.49
 

Similar to sasasasasasas

UNIT4-IO,Generics,String Handling.pdf Notes
UNIT4-IO,Generics,String Handling.pdf NotesUNIT4-IO,Generics,String Handling.pdf Notes
UNIT4-IO,Generics,String Handling.pdf NotesSakkaravarthiS1
 
File Input and output.pptx
File Input  and output.pptxFile Input  and output.pptx
File Input and output.pptxcherryreddygannu
 
Java Tutorial Lab 6
Java Tutorial Lab 6Java Tutorial Lab 6
Java Tutorial Lab 6Berk Soysal
 
Input output files in java
Input output files in javaInput output files in java
Input output files in javaKavitha713564
 
What is java input and output stream?
What is java input and output stream?What is java input and output stream?
What is java input and output stream?kanchanmahajan23
 
Reading and writting
Reading and writtingReading and writting
Reading and writtingandreeamolnar
 
File handling in input and output
File handling in input and outputFile handling in input and output
File handling in input and outputpradeepa velmurugan
 
Class IX Input in Java using Scanner Class (1).pptx
Class IX  Input in Java using Scanner Class (1).pptxClass IX  Input in Java using Scanner Class (1).pptx
Class IX Input in Java using Scanner Class (1).pptxrinkugupta37
 
Managing console i/o operation,working with files
Managing console i/o operation,working with filesManaging console i/o operation,working with files
Managing console i/o operation,working with filesramya marichamy
 
Managing,working with files
Managing,working with filesManaging,working with files
Managing,working with fileskirupasuchi1996
 
Ppl for students unit 4 and 5
Ppl for students unit 4 and 5Ppl for students unit 4 and 5
Ppl for students unit 4 and 5Akshay Nagpurkar
 
Ppl for students unit 4 and 5
Ppl for students unit 4 and 5Ppl for students unit 4 and 5
Ppl for students unit 4 and 5Akshay Nagpurkar
 

Similar to sasasasasasas (20)

UNIT4-IO,Generics,String Handling.pdf Notes
UNIT4-IO,Generics,String Handling.pdf NotesUNIT4-IO,Generics,String Handling.pdf Notes
UNIT4-IO,Generics,String Handling.pdf Notes
 
File Input and output.pptx
File Input  and output.pptxFile Input  and output.pptx
File Input and output.pptx
 
Unit IV Notes.docx
Unit IV Notes.docxUnit IV Notes.docx
Unit IV Notes.docx
 
Java Tutorial Lab 6
Java Tutorial Lab 6Java Tutorial Lab 6
Java Tutorial Lab 6
 
Input output files in java
Input output files in javaInput output files in java
Input output files in java
 
What is java input and output stream?
What is java input and output stream?What is java input and output stream?
What is java input and output stream?
 
Chapter 6
Chapter 6Chapter 6
Chapter 6
 
Files io
Files ioFiles io
Files io
 
Lecture 23
Lecture 23Lecture 23
Lecture 23
 
Streams&io
Streams&ioStreams&io
Streams&io
 
IOStream.pptx
IOStream.pptxIOStream.pptx
IOStream.pptx
 
Reading and writting
Reading and writtingReading and writting
Reading and writting
 
File handling in input and output
File handling in input and outputFile handling in input and output
File handling in input and output
 
Class IX Input in Java using Scanner Class (1).pptx
Class IX  Input in Java using Scanner Class (1).pptxClass IX  Input in Java using Scanner Class (1).pptx
Class IX Input in Java using Scanner Class (1).pptx
 
Io stream
Io streamIo stream
Io stream
 
Managing console i/o operation,working with files
Managing console i/o operation,working with filesManaging console i/o operation,working with files
Managing console i/o operation,working with files
 
Managing,working with files
Managing,working with filesManaging,working with files
Managing,working with files
 
Ppl for students unit 4 and 5
Ppl for students unit 4 and 5Ppl for students unit 4 and 5
Ppl for students unit 4 and 5
 
Ppl for students unit 4 and 5
Ppl for students unit 4 and 5Ppl for students unit 4 and 5
Ppl for students unit 4 and 5
 
File Handling.pptx
File Handling.pptxFile Handling.pptx
File Handling.pptx
 

More from santosh mishra (9)

My History
My HistoryMy History
My History
 
Biology
BiologyBiology
Biology
 
History
HistoryHistory
History
 
Biology
BiologyBiology
Biology
 
Mysql tutorial
Mysql tutorialMysql tutorial
Mysql tutorial
 
Mysql rab2-student
Mysql rab2-studentMysql rab2-student
Mysql rab2-student
 
Mysql tutorial
Mysql tutorialMysql tutorial
Mysql tutorial
 
Mysql tutorial
Mysql tutorialMysql tutorial
Mysql tutorial
 
Mysql rab2-student
Mysql rab2-studentMysql rab2-student
Mysql rab2-student
 

Recently uploaded

Benefits and Challenges of Using Open Educational Resources
Benefits and Challenges of Using Open Educational ResourcesBenefits and Challenges of Using Open Educational Resources
Benefits and Challenges of Using Open Educational Resourcesdimpy50
 
Danh sách HSG Bộ môn cấp trường - Cấp THPT.pdf
Danh sách HSG Bộ môn cấp trường - Cấp THPT.pdfDanh sách HSG Bộ môn cấp trường - Cấp THPT.pdf
Danh sách HSG Bộ môn cấp trường - Cấp THPT.pdfQucHHunhnh
 
Basic phrases for greeting and assisting costumers
Basic phrases for greeting and assisting costumersBasic phrases for greeting and assisting costumers
Basic phrases for greeting and assisting costumersPedroFerreira53928
 
How to Break the cycle of negative Thoughts
How to Break the cycle of negative ThoughtsHow to Break the cycle of negative Thoughts
How to Break the cycle of negative ThoughtsCol Mukteshwar Prasad
 
Accounting and finance exit exam 2016 E.C.pdf
Accounting and finance exit exam 2016 E.C.pdfAccounting and finance exit exam 2016 E.C.pdf
Accounting and finance exit exam 2016 E.C.pdfYibeltalNibretu
 
Additional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdfAdditional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdfjoachimlavalley1
 
678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdfCarlosHernanMontoyab2
 
How to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERPHow to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERPCeline George
 
Basic_QTL_Marker-assisted_Selection_Sourabh.ppt
Basic_QTL_Marker-assisted_Selection_Sourabh.pptBasic_QTL_Marker-assisted_Selection_Sourabh.ppt
Basic_QTL_Marker-assisted_Selection_Sourabh.pptSourabh Kumar
 
plant breeding methods in asexually or clonally propagated crops
plant breeding methods in asexually or clonally propagated cropsplant breeding methods in asexually or clonally propagated crops
plant breeding methods in asexually or clonally propagated cropsparmarsneha2
 
Salient features of Environment protection Act 1986.pptx
Salient features of Environment protection Act 1986.pptxSalient features of Environment protection Act 1986.pptx
Salient features of Environment protection Act 1986.pptxakshayaramakrishnan21
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxPavel ( NSTU)
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxJisc
 
Sectors of the Indian Economy - Class 10 Study Notes pdf
Sectors of the Indian Economy - Class 10 Study Notes pdfSectors of the Indian Economy - Class 10 Study Notes pdf
Sectors of the Indian Economy - Class 10 Study Notes pdfVivekanand Anglo Vedic Academy
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...Jisc
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxJisc
 
50 ĐỀ LUYỆN THI IOE LỚP 9 - NĂM HỌC 2022-2023 (CÓ LINK HÌNH, FILE AUDIO VÀ ĐÁ...
50 ĐỀ LUYỆN THI IOE LỚP 9 - NĂM HỌC 2022-2023 (CÓ LINK HÌNH, FILE AUDIO VÀ ĐÁ...50 ĐỀ LUYỆN THI IOE LỚP 9 - NĂM HỌC 2022-2023 (CÓ LINK HÌNH, FILE AUDIO VÀ ĐÁ...
50 ĐỀ LUYỆN THI IOE LỚP 9 - NĂM HỌC 2022-2023 (CÓ LINK HÌNH, FILE AUDIO VÀ ĐÁ...Nguyen Thanh Tu Collection
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfTamralipta Mahavidyalaya
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

Benefits and Challenges of Using Open Educational Resources
Benefits and Challenges of Using Open Educational ResourcesBenefits and Challenges of Using Open Educational Resources
Benefits and Challenges of Using Open Educational Resources
 
Danh sách HSG Bộ môn cấp trường - Cấp THPT.pdf
Danh sách HSG Bộ môn cấp trường - Cấp THPT.pdfDanh sách HSG Bộ môn cấp trường - Cấp THPT.pdf
Danh sách HSG Bộ môn cấp trường - Cấp THPT.pdf
 
Basic phrases for greeting and assisting costumers
Basic phrases for greeting and assisting costumersBasic phrases for greeting and assisting costumers
Basic phrases for greeting and assisting costumers
 
How to Break the cycle of negative Thoughts
How to Break the cycle of negative ThoughtsHow to Break the cycle of negative Thoughts
How to Break the cycle of negative Thoughts
 
Accounting and finance exit exam 2016 E.C.pdf
Accounting and finance exit exam 2016 E.C.pdfAccounting and finance exit exam 2016 E.C.pdf
Accounting and finance exit exam 2016 E.C.pdf
 
Additional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdfAdditional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdf
 
678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf
 
How to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERPHow to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERP
 
Basic_QTL_Marker-assisted_Selection_Sourabh.ppt
Basic_QTL_Marker-assisted_Selection_Sourabh.pptBasic_QTL_Marker-assisted_Selection_Sourabh.ppt
Basic_QTL_Marker-assisted_Selection_Sourabh.ppt
 
plant breeding methods in asexually or clonally propagated crops
plant breeding methods in asexually or clonally propagated cropsplant breeding methods in asexually or clonally propagated crops
plant breeding methods in asexually or clonally propagated crops
 
Salient features of Environment protection Act 1986.pptx
Salient features of Environment protection Act 1986.pptxSalient features of Environment protection Act 1986.pptx
Salient features of Environment protection Act 1986.pptx
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
 
Sectors of the Indian Economy - Class 10 Study Notes pdf
Sectors of the Indian Economy - Class 10 Study Notes pdfSectors of the Indian Economy - Class 10 Study Notes pdf
Sectors of the Indian Economy - Class 10 Study Notes pdf
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
 
50 ĐỀ LUYỆN THI IOE LỚP 9 - NĂM HỌC 2022-2023 (CÓ LINK HÌNH, FILE AUDIO VÀ ĐÁ...
50 ĐỀ LUYỆN THI IOE LỚP 9 - NĂM HỌC 2022-2023 (CÓ LINK HÌNH, FILE AUDIO VÀ ĐÁ...50 ĐỀ LUYỆN THI IOE LỚP 9 - NĂM HỌC 2022-2023 (CÓ LINK HÌNH, FILE AUDIO VÀ ĐÁ...
50 ĐỀ LUYỆN THI IOE LỚP 9 - NĂM HỌC 2022-2023 (CÓ LINK HÌNH, FILE AUDIO VÀ ĐÁ...
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...
 

sasasasasasas

  • 1. Java Input/Output 11 April 2013 OSU CSE 1
  • 2. Overview •  The Java I/O (Input/Output) package java.io contains a group of interfaces and classes similar to the OSU CSE components’ SimpleReader and SimpleWriter component families – Except that java.io is far more general, configurable, and powerful (and messy) – Hence, the names SimpleReader and SimpleWriter 11 April 2013 OSU CSE 2
  • 3. I/O Streams •  An input/output stream is a (conceptually not necessarily finite) series of data items – An input stream is a “flow” of data items from a source to a program •  The program reads from the source (or from the stream) – An output stream is a “flow” of data items from a program to a destination •  The program writes to the destination (or to the stream) 11 April 2013 OSU CSE 3
  • 4. Input Streams 11 April 2013 OSU CSE 4 source input stream program single data item
  • 5. Input Streams 11 April 2013 OSU CSE 5 source input stream program single data item Source may be the keyboard, a file on disk, a physical device, another program, even an array or String in the same program.
  • 6. Output Streams 11 April 2013 OSU CSE 6 program single data item desti- nation output stream
  • 7. Output Streams 11 April 2013 OSU CSE 7 program single data item desti- nation output stream Destination may be the console window, a file on disk, a physical device, another program, even an array or String in the same program.
  • 8. Part I: Beginner’s Guide •  This part is essentially a “how-to” guide for using java.io that assumes knowledge of the OSU CSE components’ SimpleReader and SimpleWriter component families 11 April 2013 OSU CSE 8
  • 9. Keyboard Input (SimpleReader) •  Here’s some code in main to read input from the keyboard, using SimpleReader: public static void main(String[] args) { SimpleReader input = new SimpleReader1L(); String s = input.nextLine(); ... input.close(); } 11 April 2013 OSU CSE 9
  • 10. Keyboard Input (SimpleReader) •  Here’s some code in main to read input from the keyboard, using SimpleReader: public static void main(String[] args) { SimpleReader input = new SimpleReader1L(); String s = input.nextLine(); ... input.close(); } 11 April 2013 OSU CSE 10 Advice (except for the simplest programs): to guard against the user entering “unexpected” input, read a line at a time into a String and then parse it to see whether it looks like expected.
  • 11. Overview of java.io Input 11 April 2013 OSU CSE 11 InputStream- Reader Readable Reader Closeable FileReader BufferedReader There are more classes and interfaces not discussed here!
  • 12. Keyboard Input (java.io) •  Here’s some code in main to read input from the keyboard, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 12
  • 13. Keyboard Input (java.io) •  Here’s some code in main to read input from the keyboard, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 13 Some methods in java.io throw exceptions (discussed later) under certain circumstances, and you either need to catch them or let them propagate “up the call chain”, like this.
  • 14. Keyboard Input (java.io) •  Here’s some code in main to read input from the keyboard, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 14 The variable System.in is a Java standard stream (discussed later), so you may use it without declaring it; but it is a byte stream (discussed later), so you want to wrap it ...
  • 15. Keyboard Input (java.io) •  Here’s some code in main to read input from the keyboard, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 15 ... in a character stream (discussed later) like this ...
  • 16. Keyboard Input (java.io) •  Here’s some code in main to read input from the keyboard, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 16 ... and then you want to wrap that character stream in a buffered stream (discussed later), like this, so ...
  • 17. Keyboard Input (java.io) •  Here’s some code in main to read input from the keyboard, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 17 ... you can read one line at a time into a String, like this.
  • 18. Keyboard Input (java.io) •  Here’s some code in main to read input from the keyboard, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 18 The declared types of variables when you use java.io are class types rather than interface types.
  • 19. Keyboard Input (java.io)to •  Here’s some code in main to read input from the keyboard, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 19 This technique of slightly extending features or capabilities of an object by wrapping it inside another object is a popular object-oriented design pattern called the decorator pattern.
  • 20. An Alternative (java.util) •  An attractive alternative to using java.io.BufferedReader is to use java.util.Scanner – Important difference: no IOExceptions can be raised, so you don’t need to worry about catching or throwing them – Features for parsing input are powerful, e.g., the use of regular expressions to describe delimiters between data items 11 April 2013 OSU CSE 20
  • 21. An Alternative (java.util) •  Here’s some code in main to read input from the keyboard, using Scanner: public static void main(String[] args) { Scanner input = new Scanner(System.in); String s = input.nextLine(); ... input.close(); } 11 April 2013 OSU CSE 21
  • 22. An Alternative (java.util) •  Here’s some code in main to read input from the keyboard, using Scanner: public static void main(String[] args) { Scanner input = new Scanner(System.in); String s = input.nextLine(); ... input.close(); } 11 April 2013 OSU CSE 22 Now, main does not declare that it throws IOException; in this sense it is similar to using SimpleReader.
  • 23. An Alternative (java.util) •  Here’s some code in main to read input from the keyboard, using Scanner: public static void main(String[] args) { Scanner input = new Scanner(System.in); String s = input.nextLine(); ... input.close(); } 11 April 2013 OSU CSE 23 Notice that initialization does not involve layers of wrapping of one object inside another; Scanner also has different constructors so it can be used with files.
  • 24. An Alternative (java.util) •  Here’s some code in main to read input from the keyboard, using Scanner: public static void main(String[] args) { Scanner input = new Scanner(System.in); String s = input.nextLine(); ... input.close(); } 11 April 2013 OSU CSE 24 The method for reading a line into a String has a different name than for BufferedReader: it is nextLine (like SimpleReader).
  • 25. End-of-Stream (SimpleReader) public static void main(String[] args) { SimpleReader input = new SimpleReader1L(); while (!input.atEOS()) { s = input.nextLine(); ... } ... input.close(); } 11 April 2013 OSU CSE 25
  • 26. End-of-Stream (SimpleReader) public static void main(String[] args) { SimpleReader input = new SimpleReader1L(); while (!input.atEOS()) { s = input.nextLine(); ... } ... input.close(); } 11 April 2013 OSU CSE 26 SimpleReader has a method to report “at end-of-stream”, and it can tell you this before you read “past the end of the input stream”; similarly, Scanner has method hasNext.
  • 27. End-of-Stream (java.io) public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); while (s != null) { ... s = input.readLine(); } ... input.close(); } 11 April 2013 OSU CSE 27
  • 28. End-of-Stream (java.io) public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); while (s != null) { ... s = input.readLine(); } ... input.close(); } 11 April 2013 OSU CSE 28 BufferedReader has no method to detect when you cannot read any more input, so you can check it only after you try to read “past the end of the stream”.
  • 29. End-of-Stream (java.io) public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readLine(); while (s != null) { ... s = input.readLine(); } ... input.close(); } 11 April 2013 OSU CSE 29 Before checking again, you must try to read another line.
  • 30. File Input (SimpleReader) •  Here’s some code in main to read input from a file, using SimpleReader: public static void main(String[] args) { SimpleReader input = new SimpleReader1L("data/test.txt"); String s = input.nextLine(); ... input.close(); } 11 April 2013 OSU CSE 30
  • 31. File Input (SimpleReader) •  Here’s some code in main to read input from a file, using SimpleReader: public static void main(String[] args) { SimpleReader input = new SimpleReader1L("data/test.txt"); String s = input.nextLine(); ... input.close(); } 11 April 2013 OSU CSE 31 SimpleReader has a constructor from a String, which is the name of the file you want to read from.
  • 32. File Input (java.io) •  Here’s some code in main to read input from a file, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new FileReader("data/test.txt")); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 32
  • 33. File Input (java.io) •  Here’s some code in main to read input from a file, using java.io: public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader( new FileReader("data/test.txt")); String s = input.readLine(); ... input.close(); } 11 April 2013 OSU CSE 33 Now, you wrap a BufferedReader around a FileReader (which has a constructor from a String, which is the name of the file you want to read from).
  • 34. Independence From Source •  With SimpleReader, BufferedReader, and Scanner used as shown, the source is identified in a constructor call, and subsequent code to read data is independent of the source – This is a really handy feature in many software maintenance situations – But notice: methods differ between BufferedReader and the other two! 11 April 2013 OSU CSE 34
  • 35. Console Output (SimpleWriter) •  Here’s some code in main to write output to the console, using SimpleWriter: public static void main(String[] args) { SimpleWriter output = new SimpleWriter1L(); output.print("foo"); output.println(" and bar"); ... output.close(); } 11 April 2013 OSU CSE 35
  • 36. Console Output (SimpleWriter) •  Here’s some code in main to write output to the console, using SimpleWriter: public static void main(String[] args) { SimpleWriter output = new SimpleWriter1L(); output.print("foo"); output.println(" and bar"); ... output.close(); } 11 April 2013 OSU CSE 36 Both print and println are available, and the latter should be used to output the line separator string for the current “platform” (i.e., the system the Java program is running on).
  • 37. Overview of java.io Output 11 April 2013 OSU CSE 37 OutputStream- Writer Flushable Writer Closeable FileWriter BufferedWriter Appendable PrintWriter There are more classes and interfaces not discussed here!
  • 38. Console Output (java.io) •  Here’s some code in main to write output to the console, using java.io: public static void main(String[] args) { ... System.out.print("foo"); System.out.println(" and bar"); ... } 11 April 2013 OSU CSE 38
  • 39. Console Output (java.io) •  Here’s some code in main to write output to the console, using java.io: public static void main(String[] args) { ... System.out.print("foo"); System.out.println(" and bar"); ... } 11 April 2013 OSU CSE 39 System.out is another Java standard stream (discussed later), which you neither declare nor close; both print and println are available.
  • 40. Console Output (java.io) •  Here’s some code in main to write output to the console, using java.io: public static void main(String[] args) { ... System.out.print("foo"); System.out.println(" and bar"); ... } 11 April 2013 OSU CSE 40 It is fine to use System.out for console output, but there are potential problems using (unwrapped) System.in for keyboard input.
  • 41. File Output (SimpleWriter) •  Here’s some code in main to write output to a file, using SimpleWriter: public static void main(String[] args) { SimpleWriter output = new SimpleWriter1L("data/test.txt"); output.print("foo"); output.println(" and bar"); ... output.close(); } 11 April 2013 OSU CSE 41
  • 42. File Output (SimpleWriter) •  Here’s some code in main to write output to a file, using SimpleWriter: public static void main(String[] args) { SimpleWriter output = new SimpleWriter1L("data/test.txt"); output.print("foo"); output.println(" and bar"); ... output.close(); } 11 April 2013 OSU CSE 42 SimpleWriter has a constructor from a String, which is the name of the file you want to write to.
  • 43. File Output (java.io) •  Here’s some code in main to write output to a file, using java.io: public static void main(String[] args) throws IOException { PrintWriter output = new PrintWriter( new BufferedWriter ( new FileWriter("data/test.txt"))); output.print("foo"); output.println(" and bar"); ... output.close(); } 11 April 2013 OSU CSE 43
  • 44. File Output (java.io) •  Here’s some code in main to write output to a file, using java.io: public static void main(String[] args) throws IOException { PrintWriter output = new PrintWriter( new BufferedWriter ( new FileWriter("data/test.txt"))); output.print("foo"); output.println(" and bar"); ... output.close(); } 11 April 2013 OSU CSE 44 PrintWriter is needed for convenient output, and is added as yet another wrapper—to get print and println.
  • 45. Independence From Destination •  With SimpleWriter, System.out, and PrintWriter used as shown, the destination is identified in a constructor call, and subsequent code to write data is independent of the destination – This is a really handy feature in many software maintenance situations – Unlike input, methods (print and println) for all three have same names and behaviors 11 April 2013 OSU CSE 45
  • 46. Part II: Some Details •  There are way too many details about java.io to cover here; see the Javadoc and the Java Tutorials trail on “Basic I/O” •  A few details previously promised ... 11 April 2013 OSU CSE 46
  • 47. IOException •  A general discussion of exceptions in Java is to come later still, but for now… •  A number of java.io constructors and methods might throw (raise) an IOException – Examples: files to be used as sources/ destinations may not exist, may not be readable and/or writeable by the user of the program, etc. 11 April 2013 OSU CSE 47
  • 48. Try-Catch •  As an alternative to letting an exception propagate “up the call chain” to the client (as in the earlier examples), you may deal with an IOException by catching (handling) it, e.g.: – Report that there has been an I/O error and exit “gracefully” – Try to recover from it (which is usually much harder) 11 April 2013 OSU CSE 48
  • 49. Example •  Here’s the overall structure of an example main in a simple application that reads input from a file, using java.io: public static void main(String[] args) { // Code to open file // Code to read from file // Code to close file } 11 April 2013 OSU CSE 49
  • 50. Example: Opening a File public static void main(String[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); } catch (IOException e) { System.err.println("Error opening file"); return; } // Code to read from file // Code to close file } 11 April 2013 OSU CSE 50
  • 51. Example: Opening a File public static void main(String[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); } catch (IOException e) { System.err.println("Error opening file"); return; } // Code to read from file // Code to close file } 11 April 2013 OSU CSE 51 Now, main does not declare that it throws IOException if it (always) catches the exception.
  • 52. Example: Opening a File public static void main(String[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); } catch (IOException e) { System.err.println("Error opening file"); return; } // Code to read from file // Code to close file } 11 April 2013 OSU CSE 52 This variable must be declared (but not initialized) here, so it is in scope later where the code reads from the file—if the file is opened successfully.
  • 53. Example: Opening a File public static void main(String[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); } catch (IOException e) { System.err.println("Error opening file"); return; } // Code to read from file // Code to close file } 11 April 2013 OSU CSE 53 The try block contains the code that might throw an IOException ...
  • 54. Example: Opening a File public static void main(String[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); } catch (IOException e) { System.err.println("Error opening file"); return; } // Code to read from file // Code to close file } 11 April 2013 OSU CSE 54 ... which this constructor might throw, e.g., if the file does not exist.
  • 55. Example: Opening a File public static void main(String[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); } catch (IOException e) { System.err.println("Error opening file"); return; } // Code to read from file // Code to close file } 11 April 2013 OSU CSE 55 The catch block states the exception it handles, and is executed iff code in the try block throws that exception (which is called e in the catch block).
  • 56. Example: Opening a File public static void main(String[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); } catch (IOException e) { System.err.println("Error opening file"); return; } // Code to read from file // Code to close file } 11 April 2013 OSU CSE 56 Here, the code prints an error message to System.err, another Java standard stream (discussed later), and “aborts” main by returning from it.
  • 57. Example: Opening a File public static void main(String[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); } catch (IOException e) { System.err.println("Error opening file"); return; } // Code to read from file // Code to close file } 11 April 2013 OSU CSE 57 In either case (even after the catch block, if it did not return as it does here), execution proceeds with the next statement.
  • 58. Example: Reading From a File public static void main(String[] args) { // Code to open file try { String s = input.readLine(); while (s != null) { ... s = input.readLine(); } } catch (IOException e) { System.err.println("Error reading from file"); } // Code to close file } 11 April 2013 OSU CSE 58
  • 59. Example: Reading From a File public static void main(String[] args) { // Code to open file try { String s = input.readLine(); while (s != null) { ... s = input.readLine(); } } catch (IOException e) { System.err.println("Error reading from file"); } // Code to close file } 11 April 2013 OSU CSE 59 We need this try-catch because the method readLine might throw an IOException.
  • 60. Example: Reading From a File public static void main(String[] args) { // Code to open file try { String s = input.readLine(); while (s != null) { ... s = input.readLine(); } } catch (IOException e) { System.err.println("Error reading from file"); } // Code to close file } 11 April 2013 OSU CSE 60 As before, even after the catch block (which in this case does not end with a return), execution proceeds with the next statement.
  • 61. Example: Closing a File public static void main(String[] args) { // Code to open file // Code to read from file try { input.close(); } catch (IOException e) { System.err.println("Error closing file"); } } 11 April 2013 OSU CSE 61
  • 62. Example: Closing a File public static void main(String[] args) { // Code to open file // Code to read from file try { input.close(); } catch (IOException e) { System.err.println("Error closing file"); } } 11 April 2013 OSU CSE 62 We need this try-catch because even the method close might throw an IOException.
  • 63. The Standard Streams •  The utility class System in java.lang declares three standard streams: – System.in – System.out – System.err •  You do not declare, open, or close these streams; but you can always use them without worrying about exceptions 11 April 2013 OSU CSE 63
  • 64. The Standard Streams •  The utility class System in java.lang declares three standard streams: – System.in – System.out – System.err •  You do not declare, open, or close these streams; but you can always use them without worrying about exceptions 11 April 2013 OSU CSE 64 A utility class is a class that cannot be instantiated, i.e., there is no public constructor; it is not a type, so you cannot create “an object of that type”.
  • 65. The Standard Streams •  The utility class System in java.lang declares three standard streams: – System.in – System.out – System.err •  You do not declare, open, or close these streams; but you can always use them without worrying about exceptions 11 April 2013 OSU CSE 65 System.err is intended for error messages; System.out is intended for normal output.
  • 66. Byte and Character Streams •  Java has two categories of streams: – Byte streams are streams of 8-bit bytes •  This is a kind of low-level I/O that you rarely need – Character streams are streams of Unicode characters •  This is preferred for text I/O because it accounts for the “local” character set and supports internationalization with little additional effort •  Best practice is to use character streams with textual I/O 11 April 2013 OSU CSE 66
  • 67. Buffered Streams •  Buffered streams minimize disk access for reading/writing files, and generally have performance advantages over unbuffered streams •  Best practice is to “wrap” input and output character streams to create buffered versions – This is done with BufferedReader and BufferedWriter, as seen earlier 11 April 2013 OSU CSE 67
  • 68. Files and Paths •  The File class (an original part of Java) and the Path interface (new in Java 1.7) allow you to manipulate directories and files and the “paths” to them in the file system, e.g.: – Check file existence and permissions, create files and set permissions, delete files, etc. •  See the Java Tutorials: Basic I/O and the Java libraries’ Javadoc for details 11 April 2013 OSU CSE 68
  • 69. Resources •  The Java Tutorials: Basic I/O –  http://docs.oracle.com/javase/tutorial/essential/io/index.html 11 April 2013 OSU CSE 69