การใช้งานคลาส FileReader
คลาส FileReader จะทำงานคล้ายกับ FileInputStream แต่ตัวรับของ FileInputStream จะเข้ามาเป็นตัวเลข เช่น Byte และใช้ร่วมกับ BufferedReader ไม่ได้ หากต้องการใช้ ReadLine ก็ต้องใช้ FileReader
ตัวอย่าง 7.14 เปรียบเทียบการอ่านด้วย FileReader และ FileInputStream
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 0, n = 0;
char b[] = new char[1];
FileReader fin1 = new FileReader(“x.java”);
if ((n = fin1.read(b)) != -1) { System.out.println( b[0] );} // i
fin1.close();
//
byte c[] = new byte[1]; // ถ้าใช้ Char จะ compile ไม่ผ่าน
FileInputStream fin2 = new FileInputStream(“x.java”);
// required byte for fin2.read()
if ((n = fin2.read(c)) != -1) { System.out.println( (char)c[0] );} // i
fin2.close();
}
}
ตัวอย่าง 7.15 การอ่านข้อมูลจากแฟ้มทีละตัวอักษรด้วย FileReader
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 1, n = 0;
char b[] = new char[1];
FileReader fin = new FileReader(“x.java”);
while ((n = fin.read(b)) != -1) {
System.out.println(i+” : “+b[0]);
i = i + 1;
}
fin.close();
}
}
ตัวอย่าง 7.16 การอ่านข้อมูลจากแฟ้มทีละ 16 ตัวอักษรด้วย FileReader
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 1, n = 0;
char b[] = new char[16];
FileReader fin = new FileReader(“x.java”);
while ((n = fin.read(b)) != -1) {
System.out.print((i-1)*16 + ” – ” + (i*16-1) + “:”);
System.out.print(“”+b[0]+b[1]+b[2]+b[3]+b[4]+b[5]+b[6]+b[7]+b[8]);
System.out.println(“”+b[9]+b[10]+b[11]+b[12]+b[13]+b[14]+b[15]);
i = i + 1;
}
fin.close();
}
}
ตัวอย่าง 7.17 การอ่านข้อมูลจากแฟ้มทีละบรรทัดด้วย FileReader และ BufferedReader
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 1;
String b;
FileReader fin = new FileReader(“x.java”);
BufferedReader bin = new BufferedReader (fin);
// System.out.println(b = bin.readLine()); result is String in b
while ((b = bin.readLine()) != null) {
System.out.println(i + ” : ” +b);
i = i + 1;
}
System.out.println(b = bin.readLine()); // null
fin.close();
}
}