Your SlideShare is downloading. ×
Java Programming: คลาสอินพุตและเอาต์พุต
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Java Programming: คลาสอินพุตและเอาต์พุต

5,908
views

Published on

แนะนำคลาสและเมธอดต่างๆ ที่เกี่ยวกับอินพุตและเอาต์พุต และอธิบายความหมายของ stream  โดยอธิบายคลาสที่เกี่ยวข้องกับอินพุตและเอาต์พุตที่อยู่ในแพคเก็จ java.io แนะนำคลาส InputStream, OutputStream, Reader และ …

แนะนำคลาสและเมธอดต่างๆ ที่เกี่ยวกับอินพุตและเอาต์พุต และอธิบายความหมายของ stream  โดยอธิบายคลาสที่เกี่ยวข้องกับอินพุตและเอาต์พุตที่อยู่ในแพคเก็จ java.io แนะนำคลาส InputStream, OutputStream, Reader และ Writer อธิบายการสร้างและใช้ stream แบบต่างๆ แนะนำคลาสและเมธอดของคลาส File และ RandomAccessFile อธิบายการใช้อินเตอร์เฟสที่ชื่อ Serializable และอธิบายวิธีการเขียนและอ่านข้อมูลของอ็อบเจกต์ผ่าน stream


0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,908
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
218
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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างๆ
  • 3. ว,ตถ2ประสงค8  แนะน>าคลาสและเมธอดของคลาส File  อธบายการอAาน เข(ยนและอ,พเดทข1อมEลของคลาส RandomAccessFile  อธบายการใช1อนเตอร8เฟสท(=ช=อ Serializable  อธบายวธ(การเข(ยนและอAานข1อมEลของออปเจ@คผAาน stream
  • 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 =
  • 7. คลาสประเภท InputStream
  • 8. คลาสประเภท OutputStream
  • 9. คลาสประเภท Reader
  • 10. คลาสประเภท Writer
  • 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)
  • 13. คลาส InputStream  เมธอดอนๆท(ส>าค,ญ = • void close() • int available() • void skip(long n) • boolean markSupported() • void mark(int readlimit) • void reset()
  • 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)
  • 15. คลาส OutputStream  เมธอดอนๆท(ส>าค,ญ = • void close() • void flush()
  • 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);
  • 34. ตวอยางโปรแกรม DataInputStream din.close(); fin.close(); } catch (IOException ex) { System.out.println(ex.toString()); } } }
  • 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);
  • 37. ตวอยางโปรแกรมเพอเก4บขอความลงในไฟล p.close(); oout.close(); fout.close(); } catch (IOException ex) { System.out.println(ex.toString()); } } }
  • 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อง