Más contenido relacionado Similar a Java Programming: คลาสอินพุตและเอาต์พุต (11) Más de Thanachart Numnonda (20) Java Programming: คลาสอินพุตและเอาต์พุต1. บทท 10
คลาสอนพตและเอาทพต
(Input/Output Classes)
ผศ.ธนศา เครอไวศยวรรณ
คณะเทคโนโลย(สารสนเทศ
สถาบ,นเทคโนโลย(พระจอมเกล1าเจ1าค2ณทหารลาดกระบ,ง
2. ว,ตถ2ประสงค8
อธบายความหมายและประเภทของ stream
อธบายองค8ประกอบท(ส>าค,ญของแพคเก@จ java.io
=
แนะน>าคลาสและเมธอดของคลาส InputStream และ OutputStream
แนะน>าคลาสและเมธอดของคลาส Reader และ Writer
อธบายความแตกตAางระหวAางคลาส Reader และ Writer ก,บ stream
อธบายการสร1างและใช1 stream แบบตAางๆ
4. Stream
เปรยบเสมอนทอสงขอมลจากตนทาง (source) ไปยงปลายทาง (sink)
streamชวยท"าใหผเขยนโปรแกรม ไมจ"าเป(นตองทราบรายละเอยดการ
ตดตอกบฮารดแวรหรอซอฟตแวรทใชในการสงขอมล เพยงแตตองรเมธอดท
ใชในการรบหรอสงขอมล
source เป(นต"าแหนงเรมตนของ stream เรยกวา input stream
sink เป(นต"าแหนงส/นสดของ stream เรยกวา output stream
5. Stream
source หรอ sink อาจเป(นฮารดแวรหรอซอฟตแวร เชน ไฟล หนวยความจ"า
หรอ socket เป(นตน
ภาษาจาวาแบง stream ออกเป(น
• byte stream
• character stream
ค"าวา stream โดยทวไปจะหมายถ3ง byte stream
reader และ writer จะหมายถ3ง character stream
6. แพคเก4จ java.io
คลาสทเกยวกบอนพตและเอาทพตจะถEกก>าหนดโดย Java API ในแพคเก4จ
java.io ซV=งจะม(คลาสพWนฐานอยEA 4 คลาสคอ
• InputStream
เปZนคลาสท(=ใช1ในการสร1างออปเจ@คท(เปZน stream ในการร,บชนดข1อมEลแบบ byte
=
• OutputStream
เปZนคลาสท(=ใช1ในการสร1างออปเจ@คท(เปZน stream ในการสAงชนดข1อมEลแบบ byte
=
• Reader
เปZนคลาสท(=ใช1ในการสร1างออปเจ@คท(เปZน stream ในการร,บชนดข1อมEลแบบ char
=
• Writer
เปZนคลาสท(=ใช1ในการสร1างออปเจ@คท(เปZน stream ในการสAงชนดข1อมEลแบบ char
=
11. คลาสประเภท Byte Stream
ภาษาจาวาจะม(คลาสพนฐานในการจ,ดการก,บอนพ2ตและเอาท8พ2ตท(=เปZนชนด
W
ข1อมEลแบบ byte อยEสองคลาสท(=คEAก,นคอ InputStream และ
A
OutputStream
คลาสท,WงสองเปZนคลาสแบบ abstract ซV=งเราไมAสามารถท(=จะสร1างออปเจ@ค
ของคลาสท,งสองได1 แตAคลาสท,Wงสองจะม(คลาสท(=เปZน subclass ซV=งจะใช1ใน
W
การสร1างออปเจ@คส>าหร,บการร,บและสAงข1อมEลแบบ byte ของโหนดท(=ม(
ต1นทางและปลายทางแบบตAางๆอาทเชAน
• FileInputStream และ FileOutputStream เปZนคลาสท(=ใช1ในการสร1าง
ออปเจ@คส>าหร,บต1นทางและปลายทางท(=เปZนไฟล8
• ByteArrayInputStream และ ByteArrayOutputStream เปZนคลาสท(=ใช1
ในการสร1างออปเจ@คส>าหร,บต1นทางและปลายทาง ท(=เปZนอะเรย8ของชนดข1อมEลแบบ
byte
12. คลาส InputStream
คลาส InputStream จะใช1ในการอAานข1อมEลของ stream ท(=เปZนชนดข1อมEล
แบบ byte
คลาส InputStream จะน>าข1อมEลจากโหนดต1นทางเข1ามาใน stream และ
การอAานข1อมEลจาก stream จะเปZนการลบข1อมEลท(อAานออกจาก stream โดย
=
ม(เมธอดท(ใช1ส>าหร,บการอAานข1อมEลท(=เปZน byte หรออะเรย8ของ byte
=
เทAาน,นด,งน(W
W
• int read()
• int read(byte []b)
• int read(byte []b,int offset,int length)
14. คลาส OutputStream
คลาส OutputStream จะใช1การสAงข1อมEลของ stream ท(=เปZนชนดข1อมEล
แบบ byte การสAงข1อมEลของออบเจ@คชนด Outputstream จะเปZนการเพ=ม
ข1อมEลลงใน stream
คลาส OutputStream จะม(เมธอดในการสAงข1อมEลชนด byte ท(=สอดคล1อง
ก,บเมธอด read() ในคลาส InputStream โดยคลาสน(Wจะม(เมธอด
write() ท(เปZนเมธอดแบบ abstract ในรEปแบบตAางๆด,งน(W
=
• void write(int c)
• void write(byte []b)
• void write(byte []b,int offset,int length)
16. คลาสประเภท Character Stream
ภาษาจาวาก>าหนดคลาสพนฐานในการจ,ดการก,บอนพ2ตและเอาท8พตท(เปZน
W 2 =
ชนดข1อมEลแบบ char อยEAสองคลาสคอ Reader และ Writer
คลาสท,WงสองเปZนคลาสแบบ abstract โดยม( subclass ท(=สบทอดมาเพอใช1
=
ในการสร1างออปเจ@คส>าหร,บจ,ดการก,บโหนดต1นทางและปลายทางในรEปแบบ
ตAางๆเชAน ไฟล8 หนAวยความจ>า และไบท8 เปZนต1น
17. คลาส Reader
Reader เป(นคลาสทใชในการอานขอมลของ stream ทเป(นชนดขอมลแบบ
char
Reader จะมเมธอดทเหมอนกบคลาส InputStream และมหลกการ
ท"างานทสอดคลองกนแตจะรบขอมลหรอ argument ทเป(นชนดขอมล char
โดยมเมธอดตางๆดงน/
• int read()
• int read(char []c)
• int read(char []c,int offset,int length)
• void close()
• boolean ready()
• void skip(long n)
• boolean markSupported()
• void mark(int readAheadlimit)
• void reset()
18. คลาส Writer
Writer เป(นคลาสทใชในการเขยนขอมลของ stream ทเป(นชนดขอมลแบบ
char
Writer จะมเมธอดทเหมอนกบคลาส OutputStream และมหลกการท
สอดคลองกนแตจะรบขอมลหรอ argument ทเป(นชนดขอมล char โดยม
เมธอดตางๆดงน/
• void write(int c)
• void write(char []c)
• void write(char []c,int offset,int length)
• void close()
• void flush()
เมธอดเพ=มเตมเพอเข(ยนชนดข1อมEลท(=เปZน String
=
• void write(String s)
• void write(String s,int offset,int length)
19. โหนดส>าหร,บ Stream
ภาษาจาวาก>าหนดโหนดท(เปZนต1นทางและปลายทางของ stream ไว1สามแบบ
=
คอ ไฟล8 หนAวยความจ>า และไปป^ (pipe)
ไฟล8คอโหนดส>าหร,บ stream ท(เปZนไฟล8ส>าหร,บอAานหรอเข(ยนข1อมEลชนด
=
byte
หนAวยความจ>าคอโหนดส>าหร,บ stream ท(=ใช1ส>าหร,บอAานหรอเข(ยนข1อมEลท(=
เปZนอะเรย8หรอ String
ไปป^คอโหนดส>าหร,บ stream ท(จะสAงหรอร,บข1อมEลระหวAาง process หรอ
=
โปรแกรมเธรด
20. คลาสทเป(นโหนดส>าหร,บ stream ตAางๆ
ชนด Byte Stream Character Stream
FileInputStream FileReader
File
FileOutputStream FileWriter
ByteArrayInputStream CharArrayReader
Memory: Array
ByteArrayOutputStream CharArrayWriter
StringReader
Memory: String -
StringWriter
PipedInputStream PipedReader
Pipe
PipedOutputStream PipedWriter
21. ตวอยางโปรแกรม FileCopy.java
import java.io.*;
public class FileCopy {
public static void main(String args[]) {
try {
FileInputStream fin = new
FileInputStream(args[0]);
FileOutputStream fout = new
FileOutputStream(args[1]);
byte b[] = new byte[100];
int i = fin.read(b);
while (i != -1) {
fout.write(b,0,i);
i = fin.read(b);
}
fin.close();
fout.close();
} catch (IOException e) { }
}
}
22. ตวอยางโปรแกรม FileCopyReader.java
import java.io.*;
public class FileCopyReader {
public static void main(String args[]) {
try {
FileReader fr = new FileReader(args[0]);
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter(args[1]);
BufferedWriter bw = new BufferedWriter(fw);
String line = br.readLine();
while (line != null) {
bw.write(line,0,line.length());
bw.newLine();
line = br.readLine();
}
br.close();
bw.close();
} catch (IOException e) { }
}
}
23. อธบายตวอยางโปรแกรม
โปรแกรม FileCopy.java แสดงต,วอยAางของการก@อบป_`ข1อมEลของไฟล8
หนVงไฟล8ไปย,งไฟล8อ=น โดยใช1 byte stream
=
โปรแกรม FileCopyReader.java แสดงต,วอยAางของก@อปป_`ขอมEลของ
1
ไฟล8เชAนเด(ยวก,บโปรแกรม FileCopy.java แตAจะใช1 character stream
24. การเช=อมตAอออปเจ@คของคลาส
โดยท,วไปโปรแกรมภาษาจาวาจะใช1ออปเจ@คประเภท stream มากกวAาหนVง
= =
ออปเจ@คโดยจะเช=อมออปเจ@คของ stream ตAางๆเข1าด1วยก,นเพ=อใช1ในการ
แปลงชนดข1อมEลประเภทตAางๆ
ตวอยางแสดงการเชอมตอออปเจ@คของคลาส FileInputStream ทอาน
ขอมลเข1ามาโดยม(ชนดข1อมEลเป(น byte เขากบออปเจ@คของคลาส
DataInputStream เพอใชอานขอมลชนดอนๆได1มากขVWนเชน
FileInputStream fin = new FileInputStream(“test.dat”);
DataInputStream din = new DataInputStream(fin);
25. คลาสประเภท stream ระด,บสEง
ออปเจ@คท(ใช1ในการเช=อมตAอ stream จะเปZนออปเจ@คของคลาสประเภท
=
steam ระด,บสEง (high-level stream) ซV=งสามารถท(จะอAานหรอเข(ยนข1อมEลท(=
=
เปZนชนดข1อมEลอ=นๆแล1วแปลงข1อมEลให1เปZนชนดข1อมEลแบบ byte หรอม(
บ,ฟเฟอร8ในการเพ=มประสทธภาพในการอAานหรอเข(ยนข1อมEล
คลาสเหลAาน(จะไมAสามารถอAานหรอเข(ยนข1อมEลไปย,งโหนดต1นทางหรอปลาย
W
ทางท(เปZนไฟล8 หนAวยความจ>า หรอ Pipe ได1โดยตรง แตAจะร,บข1อมEลมาจาก
=
stream อ=นๆท(=เปZนคลาสพนฐานในการอAานหรอเข(ยนข1อมEล
W
26. คลาสประเภท stream ระด,บสEงท(ส>าค,ญ
=
DataInputStream และ DataOutputStream
• เปZนคลาสท(=ใช1ในการแปลงชนดข1อมEลระหวAางชนดข1อมEลแบบ byte ก,บชนดข1อมEล
แบบอ=นๆ
BufferedInputStream และ BufferedOutputStream
• เปZนคลาสท(=ม(บ,ฟเฟอร8ส>าหร,บชนดข1อมEล byte อยEAภายในเพ=อให1สามารถอAานหรอ
เข(ยนข1อมEลขนาดใหญA ซV=งจะชAวยเพ=มประสทธภาพในการอAานหรอเข(ยนข1อมEล
PrintStream
• เปZนคลาสท(=ใช1ในการเข(ยนข1อความท(เปZน String ท(แปลงมาจากชนดข1อมEลแบบ
= =
byte ออปเจ@คท(=ชอ out และ err ท(=อยEในคลาสท(=ชอ System เปZนต,วอยAางขอ
= A =
งออปเจ@คท(ใช1คลาสน(W
=
PushbackInputStream
• คลาสน/อนญาตใหสงขอมลชนด byte ทเพงอานมากลบไปยง stream ได
27. คลาสประเภท stream ระด,บสEงท(ส>าค,ญ
=
ButteredReader และ BufferedWriter
• เปZนคลาสท(=ม(บ,ฟเฟอร8ส>าหร,บชนดข1อมEลแบบ char เพ=อให1สามารถอAานหรอเข(ยน
ข1อมEลข1อใหญAได1
InputStreamReader และ OutputStreamWriter
• เปZนคลาสท(=ใช1ในการแปลงชนดข1อมEลระหวAางชนดข1อมEลแบบ char ก,บชนดข1อมEล
แบบอ=นๆ
PrintWriter
• เปZนคลาสท(=ใช1ในการเข(ยนข1อความท(เปZน String ท(แปลงมาจากชนดข1อมEลแบบ
= =
char
PushbackReader
• เปZนคลาสท(=อน2ญาตให1สAงข1อมEลชนด char ท(เพ=งอAานมากล,บไปย,ง stream ได1
=
28. คลาสประเภท stream ระด,บสEง
ชนด Byte Stream Character Stream
BufferedInputStream BufferedReader
Buffering
BufferedOutputStream BufferedWriter
FilterInputStream FilterReader
Filtering
FilterOutputStream FilterWriter
Data DataInputStream
-
conversion DataOutputStream
Printing PrintStream PrintWriter
Peeking ahead PushbackInputStream PushbackReader
29. การเชอมตอ Stream หลายช/น
เราสามารถเชอมตอ Stream ไดหลายช/น เชน
FileInputStream f = new FileInputStream(“text.dat”);
BufferedInputStream b = new BufferedInputStream(f);
DataInputStream d = new DataInputStream(b);
30. คลาส DataInputStream
คลาส DataInputStream มเมธอดในการอานขอมลชนดตางๆดงน/
• boolean readBoolean()
• byte readByte()
• char readChar()
• double readDouble()
• float readFloat()
• int readInt()
• long readLong()
• short readShort()
• String readUTF()
31. คลาส DataOutputStream
DateOutputStream เป(น high-level FilterStream ซ3งมเมธอดในการ
เขยนขอมลชนดตางๆดงน/
• void writeBoolean(boolean b)
• void writeByte(int b)
• void writeByte(String s)
• void writeChar(int c)
• void writeDouble(double d)
• void writeFloat(float f)
• void writeInt(int i)
• void writeLong(long l)
• void writeShort(int s)
• void writeUTF(String s)
32. ตวอยางของการใช1คลาส DataOutputStream
import java.io.*;
public class DataWriterDemo {
public static void main (String args[]) {
try {
FileOutputStream fout;
DataOutputStream dout;
fout = new FileOutputStream("data.dat");
dout = new DataOutputStream(fout);
dout.writeInt(124);
dout.writeDouble(2.45);
dout.writeChar('a');
dout.writeUTF("test");
dout.close();
fout.close();
} catch (IOException ex) {
System.out.println(ex.toString());
}
}
}
33. ตวอยางโปรแกรม DataInputStream
import java.io.*;
public class DataReaderDemo {
public static void main (String args[]) {
try {
FileInputStream fin;
DataInputStream din;
fin = new FileInputStream("data.dat");
din = new DataInputStream(fin);
int x = din.readInt();
double d = din.readDouble();
char ch = din.readChar();
String line = din.readUTF();
System.out.println("x= " + x + " d= "
+ d + " ch= " + ch);
System.out.println(line);
35. การแปลงขอมลระหวาง byte และ char
เราสามารถท(=จะแปลง stream ระหวAางชนดข1อมEลแบบ byte และชนดข1อมEล
แบบ char ได1โดยใช1
• คลาส InputStreamReader ซV=งจะอAานชนดข1อมEลแบบ byte แล1วแปลงเปZน
ชนดข1อมEลแบบ char
• คลาส OutputStreamWriter ซV=งจะอAานชนดข1อมEลแบบ char แล1วแปลงเปZน
ชนดข1อมEลแบบ byte
36. ตวอยางโปรแกรมเพอเก4บขอความลงในไฟล
import java.io.*;
public class FileWriter {
public static void main(String args[]) {
FileOutputStream fout;
OutputStreamWriter oout;
PrintWriter p;
String line1 = "This is a test message";
String line2 = "This is another line";
try {
fout = new
FileOutputStream("data.dat");
oout = new OutputStreamWriter(fout);
p = new PrintWriter(oout);
p.println(line1);
p.println(line2);
38. ตวอยางโปรแกรมเพออานขอมลจากไฟล
import java.io.*;
public class FileReader {
public static void main(String args[]) {
try {
FileInputStream fin = new FileInputStream("c:data.dat");
InputStreamReader in = new InputStreamReader(fin);
BufferedReader bin = new BufferedReader(in);
System.out.println(bin.readLine());
System.out.println(bin.readLine());
bin.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
39. คลาส File
คลาสท(=ช=อ FileเปZนคลาสท(=อยEในแพคเก@จ java.io เปZนคลาสท(=ใช1ใน
A
การสร1างออปเจ@คท(=เปZนไฟล8หรอไดเร@กทอร(=
คลาส File จะม(เมธอดในการจ,ดการก,บไฟล8หรอไดเร@กทอร(= และเมธอดใน
การสบค1นข1อมEลตAางๆอยEหลายเมธอด
A
ออปเจ@คของคลาส File จะสร1างมาจาก constructor ท(=ม(รEปแบบด,งน(W
• public File(String name)
• public File(String dir, String name)
• public File(File dir, String name)
40. เมธอดของคลาส File
เมธอดของคลาส File ท(ใช1ในการสบค1นข1อมEลหรอจ,ดการก,บไฟล8ท(=ส>าค,ญม(
=
ด,งน(W
• boolean exists()
• boolean isFile()
• boolean isDirectory()
• String getName()
• String getParent()
• String []list()
• boolean canWrite()
• boolean mkdir()
• boolean renameTo(File newName)
41. การสร1างออปเจ@คของคลาส File
เราสามารถสรางออปเจ4คชนดคลาส File เพอตรวจสอบวามไฟลดงกลาว
หรอไม
Constructor ของ FileInputStream/FileOutputStream หรอ
FileReader/FileWriter ม argument ทเป(นออปเจ4คชนดคลาส File
ตวอยาง
File f = new File(“test.dat”);
if (f.exists()) {
FileInputStream fir = new FileInputStream(f);
}
42. คลาส RandomAccessFile
ภาษาจาวาม(คลาสท(=สน,บสน2นการอAานหรอเข(ยนไฟล8เปZนแบบ random
access กลAาวคอไมAจ>าเปZนจะต1องอAานหรอเข(ยนข1อมEลของไฟล8เร(ยงตาม
ล>าด,บจากต>าแหนAงแรกส2ดไปย,งต>าแหนAงส2ดท1ายของไฟล8 คลาสประเภทน(คอ
W
คลาส RandomAccessFile ซV=งจะใช1เวลาในการอAานหรอเข(ยนข1อมEลใน
ต>าแหนAงตAางๆเทAาก,น
คลาส RandomAccessFile จะม( constructor อยEสองรEปแบบด,งน(W
A
• public RandomAccessFile(String name,String mode)
• public RandomAccessFile(File file,String mode)
mode อาจก"าหนดเป(น
• “r” เป( นการเปcดไ ฟลเพ=ออานขอมล
ปZ
• “rw” เป( นการเปcด ไฟลเพ=ออานและเขยนขอมล
ปZ
43. เมธอดของคลาส RandomAccessFile
คลาส RandomAccessFile จะม(เมธอดส>าหร,บการอAานและเข(ยนข1อมEล
ท(เปZนชนดข1อมEลแบบพนฐานชนดตAางๆคล1ายก,บคลาส
= W
DataInputStream และ DataOutputStream
คลาส RandomAccessFile ม(เมธอดอ=นๆท(ส>าค,ญเพ=มเตมมาด,งน(W
=
• long getFilePointer()
• long length()
• void seek(long pos)
44. ObjectStream
ภาษาจาวามคลาสทใชในการรบและสงขอมลของออปเจ4คทชอ
• ObjectInputStream
• ObjectOutputStream
ท,งน(Wออปเจ@คท(=จะสามารถสAงผAาน stream เหลAาน(ได1จะต1องเปZนออปเจ@คของ
W W
คลาสท(= implements อนเตอร8เฟส Serializable ซV=งเปZนอนเตอร8เฟส
ในแพคเก@จ java.io
ออปเจ@คบางประเภทจะไมAสามารถท(จะ implements อนเตอร8เฟส
=
Serializable ได1 เนองจากข1อมEลของออปเจ@คอาจเปล(=ยนแปลงได1ตลอด
=
เวลา อาทเชAน ออปเจ@คของคลาส Thread หรอ FileInputStream
45. ObjectStream
เราสามารถจะระบ2คณล,กษณะของออปเจ@คหรอค2ณล,กษณะของคลาสท(ไมA
2 =
ต1องการจะเก@บหรอเร(ยกดEข1อมEลผAาน stream ได1โดยการระบ2ให1ค2ณล,กษณะ
ด,งกลAาวม( modifier เปZนค(ยเวร8ดท(ช=อ transient ต,วอยAางเชAน
8 =
public class Student implements Serializable {
private String id,name;
private double gpa;
private transient String parent;
}
คลาส ObjectOutputStream เปZนคลาสท(ใช1ในการเข(ยนออปเจ@คใดๆลง
=
ใน stream โดยม(เมธอด writeObject()ท(ใช1ในการเข(ยนข1อมEล
=
สAวนคลาส ObjectInputStream เปZนคลาสท(=ใช1ในการร,บออปเจ@คใดๆมา
จาก stream โดยม(เมธอด readObject() ท(=ใช1ในการอAานข1อมEล
46. ต,วอยAางโปรแกรม
import java.io.*;
public class ObjectPersistenceDemo {
public static void main(String args[]) {
Student s = new Student("Somchai", "4514452-2",
3.21);
FileOutputStream fout;
ObjectOutputStream oout;
FileInputStream fin;
ObjectInputStream oin;
try {
fout = new FileOutputStream("data.dat");
oout = new ObjectOutputStream(fout);
oout.writeObject(s);
System.out.println("Write to file
successfully");
oout.close();
fout.close();
47. ต,วอยAางโปรแกรม
fin = new FileInputStream("data.dat");
oin = new ObjectInputStream(fin);
Student s2 = (Student) oin.readObject();
System.out.print(s2.id);
…
oin.close();
fin.close();
s2.showAllDetails();
} catch (ClassNotFoundException ex) {
System.out.println(ex.toString());
} catch (IOException ex) {
System.out.println(ex.toString());
}
}
}
Write to file
ผลล,พธ8ท(=ได1จากการร,นโปรแกรม successfully
ID: 4514452-2
Name: Somchai
GPA: 3.21
48. สร2ปเนอหาของบท
W
stream เปร(ยบเสมอนทAอสAงข1อมEล สามารถแบAงออกได1เปZน 2 ประเภทคอ
byte stream และ character stream
byte stream ม(คลาสพนฐานคอ คลาส InputStream และ
W
OutputStream
character stream ม(คลาสพนฐานคอ คลาส Reader และ Writer
W
คลาส InputStream จะใช1ในการอAานข1อมEลของ stream และ
OutputStream จะน>าข1อมEลจากโหนดต1นทางเข1ามาใน stream ส>าหร,บ
ข1อมEลท(=ม(ชนดข1อมEลเปZนแบบ byte
49. สร2ปเนอหาของบท
W
คลาส Reader เปZนคลาสท(ใช1ในการอAานข1อมEลของ stream และ
=
คลาสWriter เปZนคลาสท(=ใช1ในการเข(ยนข1อมEลของ stream ส>าหร,บข1อมEลท(=
ม(ชนดข1อมEลเปZนแบบ char
คลาสประเภท stream ระด,บสEงท(ส>าค,ญคอ คลาส DataInputStream,
=
DataOutputStream, BufferedInputStream,
BufferedOutputStream, PrintStream,
PushbackInputStream, BufferedReader, BufferedWriter,
InputStreamReader, OutputStreamWriter, PrintWriter
และ PushbackReader
การเช=อมตAอ stream หลายช,Wน จะท>าให1สามารถเร(ยกใช1เมธอดได1หลายรEป
แบบตามความต1องการในการใช1งาน
50. สร2ปเนอหาของบท
W
คลาส File ใช1ในการสร1างออปเจ@คของไฟล8หรอไดเร@กทอร(= โดยจะม(เมธอด
ท(ใช1ในการจ,ดการก,บไฟล8
=
คลาส RandomAccessFile จะม(รปแบบในการอAานและเข(ยนข1อมEลเปZน
E
แบบ random access
ออปเจ@คท(จะสามารถร,บหรอสAงผAาน stream ได1จะต1องเปZนออปเจ@คของคลาส
=
ท(= implements อนเตอร8เฟส Serializable
51. แบบฝhกห,ด
ข1อท(= 1
• จากโปรแกรมจ>าลองระบบธนาคาร ให1ทดลองเข(ยนโปรแกรมเพอเก@บข1อมEลตAางๆลง
=
ไฟล8 และสามารถเร(ยกกล,บมาใช1งานได1อยAางถEกต1อง