Java IO
Java IO
Web
programming
Java Input/Output
Agenda
Handling files and directories through the
File class
Understanding which streams to use for
character-based or byte-based streams
Character File input and output
Formatting output
Reading data from the console
Binary File input and output
Input/Output
www.corewebprogramming.com
File Class
A File object can refer to either a file or a
directory
File file1 = new File("data.txt");
File file1 = new File("C:\java");
Input/Output
www.corewebprogramming.com
list
mkdir
delete
toURL
Input/Output
www.corewebprogramming.com
Input/Output
www.corewebprogramming.com
DirectoryListing, Result
> java DirListing
Directory of C:\java\
DirListing.class
DirListing.java
test
TryCatchExample.class
TryCatchExample.java
XslTransformer.class
XslTransformer.java
Input/Output
www.corewebprogramming.com
Input/Output
The java.io package provides over 60
input/output classes (streams)
Streams are combined (piped together) to
create a desired data source or sink
Streams are either byte-oriented or
character-oriented
Use DataStreams for byte-oriented I/O
Use Readers and Writers for character-based I/O
Character I/O uses an encoding scheme
www.corewebprogramming.com
Input/Output
Methods
Construction
FileWriter
write(int char)
write(byte[] buffer)
write(String str)
Buffered Character
File Output
BufferedWriter
write(int char)
write(char[] buffer)
write(String str)
newLine()
Input/Output
www.corewebprogramming.com
Methods
PrintWriter
write(int char)
write(char[] buffer)
writer(String str)
print( )
println( )
Construction
FileWriter fout = new FileWriter("filename");
PrintWriter pout = new PrintWriter(fout);
or
PrintWriter pout = new PrintWriter(
new FileWriter("filename"));
or
PrintWriter pout = new PrintWriter(
new BufferedWriter(
new FileWriter("filename")));
Input/Output
www.corewebprogramming.com
FileWriter
Constructors
FileWriter(String filename)/FileWriter(File file)
Creates a output stream using the default encoding
Useful Methods
write(String str)/write(char[] buffer)
Writes string or array of chars to the file
write(int char)
Writes a character (int) to the file
flush
Writes any buffered characters to the file
close
Closes the file stream after performing a flush
getEncoding
Returns the character encoding used by the file stream
10
Input/Output
www.corewebprogramming.com
CharacterFileOutput, Example
import java.io.*;
public class CharacterFileOutput {
public static void main(String[] args) {
FileWriter out = null;
try {
out = new FileWriter("book.txt");
System.out.println("Encoding: " + out.getEncoding());
out.write("Core Web Programming");
out.close();
out = null;
} catch(IOException ioe) {
System.out.println("IO problem: " + ioe);
ioe.printStackTrace();
try {
if (out != null) {
out.close();
}
} catch(IOException ioe2) { }
}
}
11
Input/Output
www.corewebprogramming.com
CharacterFileOutput, Result
> java CharacterFileOutput
Encoding: Cp1252
> type book.txt
Core Web Programming
Input/Output
www.corewebprogramming.com
Formatting Output
Approach
1. Create a DecimalFormat object describing the
formatting
DecimalFormat formatter =
new DecimalFormat("#,###.##");
www.corewebprogramming.com
Input/Output
Formatting Characters
Symbol
Meaning
0
#
.
,
E
%
14
Input/Output
www.corewebprogramming.com
NumFormat, Example
import java.text.*;
public class NumFormat {
public static void main (String[] args) {
DecimalFormat science = new DecimalFormat("0.000E0");
DecimalFormat plain = new DecimalFormat("0.0000");
for(double d=100.0; d<140.0; d*=1.10) {
System.out.println("Scientific: " + science.format(d) +
" and Plain: " + plain.format(d));
}
}
}
15
www.corewebprogramming.com
Input/Output
NumFormat, Result
> java NumFormat
Scientific:
Scientific:
Scientific:
Scientific:
16
Input/Output
1.000E2
1.100E2
1.210E2
1.331E2
and
and
and
and
Plain:
Plain:
Plain:
Plain:
100.0000
110.0000
121.0000
133.1000
www.corewebprogramming.com
17
Methods
Construction
FileReader
read()
read(char[] buffer)
Buffered Character
File Input
BufferedReader
read()
read(char[] buffer)
readLine()
Input/Output
www.corewebprogramming.com
FileReader
Constructors
FileReader(String filename)/FileReader(File file)
Creates a input stream using the default encoding
Useful Methods
read/read(char[] buffer)
Reads a single character or array of characters
Returns 1 if the end of the steam is reached
reset
Moves to beginning of stream (file)
skip
Advances the number of characters
Input/Output
www.corewebprogramming.com
CharacterFileInput, Example
import java.io.*;
public class CharacterFileInput {
public static void main(String[] args) {
File file = new File("book.txt");
FileReader in = null;
if(file.exists()) {
try {
in = new FileReader(file);
System.out.println("Encoding: " + in.getEncoding());
char[] buffer = new char[(int)file.length()];
in.read(buffer);
System.out.println(buffer);
in.close();
} catch(IOException ioe) {
System.out.println("IO problem: " + ioe);
ioe.printStackTrace();
...
}
}
}
19
Input/Output
www.corewebprogramming.com
CharacterFileInput, Result
> java CharacterFileInput
Encoding: Cp1252
Core Web Programming
20
Input/Output
www.corewebprogramming.com
10
Console Input
To read input from the console, a stream
must be associated with the standard input,
System.in
import java.io.*;
21
DataInputStream
readByte
readShort
readInt
readLong
readFloat
readDouble
readBoolean
readChar
readUTF
readFully
DataOutputStream
writeByte
writeShort
writeInt
writeLong
writeFloat
writeDouble
writeBoolean
writeChar
writeUTF
The readFully method blocks until all bytes are read or an EOF occurs
Values are written in big-endian fashion regardless of computer platform
22
Input/Output
www.corewebprogramming.com
11
23
Representation
ASCII (0x0000 - 0x007F)
Second or third byte
First byte in a 2-byte sequence (0x0080 - 0x07FF)
First byte in a 3-byte sequence (0x0800 - 0xFFFF)
www.corewebprogramming.com
Input/Output
24
Methods
Construction
FileOutputStream
write(byte)
write(byte[] buffer)
DataOutputStream
writeByte(byte)
writeShort(short)
writeInt(int)
writeLong(long)
writeFloat(float)
writeDouble(double)
writechar(char)
writeBoolean(boolean)
writeUTF(string)
writeBytes(string)
writeChars(string)
Input/Output
or
DataOutputStream dout = new DataOutputStream(
new FileOutputStream(
new File("filename")));
www.corewebprogramming.com
12
Methods
BufferedOutputStream
flush()
write(byte)
write(byte[] buffer, int off, int len)
Construction
File file = new File("filename");
FileOutputStream fout = new FileOutputStream(file);
BufferedOutputStream bout = new BufferedOutputStream(fout);
DataOutputStream dout = new DataOutputStream(bout);
or
DataOutputStream dout = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File("filename"))));
25
Input/Output
www.corewebprogramming.com
BinaryFileOutput, Example
import java.io.*;
public class BinaryFileOutput {
public static void main(String[] args) {
int[] primes = { 1, 2, 3, 5, 11, 17, 19, 23 };
DataOutputStream out = null;
try {
out = new DataOutputStream(
new FileOutputStream("primes.bin"));
for(int i=0; i<primes.length; i++) {
out.writeInt(primes[i]);
}
out.close();
} catch(IOException ioe) {
System.out.println("IO problem: " + ioe);
ioe.printStackTrace();
}
}
}
26
Input/Output
www.corewebprogramming.com
13
27
Methods
Construction
FileInputStream
read()
read(byte[] buffer)
DataInputStream
readByte()
readShort()
readInt()
readLong()
readFloat()
readDouble()
readchar()
readBoolean()
readUTF()
readFully(byte[] buffer)
www.corewebprogramming.com
Input/Output
Methods
Construction
Bufferred Binary
File Input
BufferedInputStream
read()
read(byte[] buffer, int off, int len)
skip(long)
28
Input/Output
www.corewebprogramming.com
14
BinaryFileInput, Example
import java.io.*;
public class BinaryFileInput {
public static void main(String[] args) {
DataInputStream in = null;
File file = new File("primes.bin");
try {
in = new DataInputStream(
new FileInputStream(file));
int prime;
long size = file.length()/4; // 4 bytes per int
for(long i=0; i<size; i++) {
prime = in.readInt();
System.out.println(prime);
}
in.close();
} catch(IOException ioe) {
System.out.println("IO problem: " + ioe);
ioe.printStackTrace();
}
}
29
Input/Output
www.corewebprogramming.com
Summary
A File can refer to either a file or a
directory
Use Readers and Writers for characterbased I/O
A BufferedReader is required for readLine
Java provides no printf; use DecimalFormat for formatted
output
Input/Output
www.corewebprogramming.com
15
core
Web
programming
Questions?
31
16