Byte Streams
A byte stream access the file byte by byte. Java programs use byte streams to perform input and output of 8-bit bytes. It is suitable for any kind of file, however not quite appropriate for text files. For example, if the file is using a unicode encoding and a character is represented with two bytes, the byte stream will treat these separately and you will need to do the conversion yourself. Byte oriented streams do not use any encoding scheme while Character oriented streams use character encoding scheme(UNICODE). All byte stream classes are descended from InputStream and OutputStream .
import java.io.*;
public class TestClass{
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("in.txt");
fos = new FileOutputStream ("out.txt");
int temp;
while ((temp = fis.read()) != -1) //read byte by byte
fos.write((byte)temp); //write byte by byte
if (fis != null)
fis.close();
if (fos != null)
fos.close();
}catch(Exception e){
System.out.println(e);
}
}
}
Character Streams
A character stream will read a file character by character. Character Stream is a higher level concept than Byte Stream . A Character Stream is, effectively, a Byte Stream that has been wrapped with logic that allows it to output characters from a specific encoding. That means, a character stream needs to be given the file's encoding in order to work properly. Character stream can support all types of character sets ASCII, Unicode, UTF-8, UTF-16 etc. All character stream classes are descended from Reader and Writer .
Example
import java.io.*;
public class TestClass{
public static void main(String[] args) {
FileReader reader = null;
try {
reader = new FileReader("in.txt");
int fChar;
while ((fChar = reader.read()) != -1) //read char by char
System.out.println((char)fChar); //write char by char
}catch(Exception e){
System.out.println(e);
}
}
}
Credit: http://net-informations.com/java/cjava/stream.htm
Ling