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

6,786 views

Published on

แนะนำคลาสและเมธอดต่างๆ ที่เกี่ยวกับอินพุตและเอาต์พุต และอธิบายความหมายของ 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
6,786
On SlideShare
0
From Embeds
0
Number of Embeds
320
Actions
Shares
0
Downloads
248
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. บทท 10 คลาสอนพตและเอาทพต (Input/Output Classes) ผศ.ธนศา เครอไวศยวรรณ คณะเทคโนโลย(สารสนเทศ สถาบ,นเทคโนโลย(พระจอมเกล1าเจ1าค2ณทหารลาดกระบ,ง
  2. 2. ว,ตถ2ประสงค8  อธบายความหมายและประเภทของ stream  อธบายองค8ประกอบท(ส>าค,ญของแพคเก@จ java.io =  แนะน>าคลาสและเมธอดของคลาส InputStream และ OutputStream  แนะน>าคลาสและเมธอดของคลาส Reader และ Writer  อธบายความแตกตAางระหวAางคลาส Reader และ Writer ก,บ stream  อธบายการสร1างและใช1 stream แบบตAางๆ
  3. 3. ว,ตถ2ประสงค8  แนะน>าคลาสและเมธอดของคลาส File  อธบายการอAาน เข(ยนและอ,พเดทข1อมEลของคลาส RandomAccessFile  อธบายการใช1อนเตอร8เฟสท(=ช=อ Serializable  อธบายวธ(การเข(ยนและอAานข1อมEลของออปเจ@คผAาน stream
  4. 4. Stream  เปรยบเสมอนทอสงขอมลจากตนทาง (source) ไปยงปลายทาง (sink)  streamชวยท"าใหผเขยนโปรแกรม ไมจ"าเป(นตองทราบรายละเอยดการ ตดตอกบฮารดแวรหรอซอฟตแวรทใชในการสงขอมล เพยงแตตองรเมธอดท ใชในการรบหรอสงขอมล  source เป(นต"าแหนงเรมตนของ stream เรยกวา input stream  sink เป(นต"าแหนงส/นสดของ stream เรยกวา output stream
  5. 5. Stream  source หรอ sink อาจเป(นฮารดแวรหรอซอฟตแวร เชน ไฟล หนวยความจ"า หรอ socket เป(นตน  ภาษาจาวาแบง stream ออกเป(น • byte stream • character stream  ค"าวา stream โดยทวไปจะหมายถ3ง byte stream  reader และ writer จะหมายถ3ง character stream
  6. 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. 7. คลาสประเภท InputStream
  8. 8. คลาสประเภท OutputStream
  9. 9. คลาสประเภท Reader
  10. 10. คลาสประเภท Writer
  11. 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. 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. 13. คลาส InputStream  เมธอดอนๆท(ส>าค,ญ = • void close() • int available() • void skip(long n) • boolean markSupported() • void mark(int readlimit) • void reset()
  14. 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. 15. คลาส OutputStream  เมธอดอนๆท(ส>าค,ญ = • void close() • void flush()
  16. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 29. การเชอมตอ Stream หลายช/น  เราสามารถเชอมตอ Stream ไดหลายช/น เชน FileInputStream f = new FileInputStream(“text.dat”); BufferedInputStream b = new BufferedInputStream(f); DataInputStream d = new DataInputStream(b);
  30. 30. คลาส DataInputStream  คลาส DataInputStream มเมธอดในการอานขอมลชนดตางๆดงน/ • boolean readBoolean() • byte readByte() • char readChar() • double readDouble() • float readFloat() • int readInt() • long readLong() • short readShort() • String readUTF()
  31. 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. 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. 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. 34. ตวอยางโปรแกรม DataInputStream din.close(); fin.close(); } catch (IOException ex) { System.out.println(ex.toString()); } } }
  35. 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. 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. 37. ตวอยางโปรแกรมเพอเก4บขอความลงในไฟล p.close(); oout.close(); fout.close(); } catch (IOException ex) { System.out.println(ex.toString()); } } }
  38. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 51. แบบฝhกห,ด  ข1อท(= 1 • จากโปรแกรมจ>าลองระบบธนาคาร ให1ทดลองเข(ยนโปรแกรมเพอเก@บข1อมEลตAางๆลง = ไฟล8 และสามารถเร(ยกกล,บมาใช1งานได1อยAางถEกต1อง

×