แนวคิดพื้นฐานของสตรีม IO
สตรีม IO ใช้ในการประมวลผลการส่งข้อมูลระหว่างอุปกรณ์
Java ดำเนินการข้อมูลผ่านสตรีม
วัตถุที่ใช้โดย Java เพื่อใช้งานสตรีมจะแบ่งออกเป็นสองประเภทของสตรีมบนแพ็กเก็ต IO: สตรีมไบต์และสตรีมอักขระ: สตรีมอินพุตและสตรีมเอาต์พุต
คลาสพื้นฐานพื้นฐานสำหรับสตรีมไบต์: inputstream, outputstream
คลาสพื้นฐานพื้นฐานสำหรับสตรีมอักขระ: ผู้อ่านนักเขียน
หมายเหตุ: ชื่อ subclass ที่ได้มาจากคลาส 4 คลาสเหล่านี้เป็นคำต่อท้ายทั้งหมดของชื่อ subclass ที่มีชื่อคลาสแม่ของพวกเขา
ตัวอย่างเช่น: subclass ของ inputstream: fileInputStream
ตัวอย่างเช่น: คลาสย่อยของผู้อ่าน filereader
หากคุณสร้างวัตถุ FileWriter เมื่อวัตถุเริ่มต้นไฟล์ที่จะดำเนินการจะต้องกำหนดไว้อย่างชัดเจนและไฟล์จะถูกสร้างขึ้นไปยังไดเรกทอรีที่ระบุ หากมีไฟล์ที่มีชื่อเดียวกันในไดเรกทอรีมันจะถูกเขียนทับ
การสาธิต:
แพ็คเกจ javase.day18; นำเข้า java.io.filewriter; นำเข้า java.io.ioException; ชั้นเรียนสาธารณะ FileWriterDemo {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {fileWriter fw = null; ลอง {fw = ใหม่ fileWriter ("c: //java_test//filewritertest.txt"); // เรียกวิธีการเขียนเพื่อเขียนสตริงไปยังสตรีม fw.write ("Alex Test23"); // สดข้อมูลในบัฟเฟอร์ในวัตถุสตรีม fw.flush (); } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (fw! = null) {// ปิดทรัพยากรสตรีม แต่บัฟเฟอร์ภายในจะถูกรีเฟรชหนึ่งครั้งก่อนปิด fw.close (); }}} catch (ioexception e) {e.printstacktrace (); }}}} แพ็คเกจ javase.day18; นำเข้า java.io.filewriter; นำเข้า java.io.ioException; ชั้นเรียนสาธารณะ FileWriterDemo {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {fileWriter fw = null; ลอง {fw = ใหม่ fileWriter ("c: //java_test//filewritertest.txt"); // เรียกวิธีการเขียนเพื่อเขียนสตริงไปยังสตรีม fw.write ("Alex Test23"); // สดข้อมูลในบัฟเฟอร์ในวัตถุสตรีม fw.flush (); } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (fw! = null) {// ปิดทรัพยากรสตรีม แต่ข้อมูลในบัฟเฟอร์ภายในจะถูกรีเฟรชหนึ่งครั้งก่อนปิด fw.close (); }}} catch (ioexception e) {e.printstacktrace (); -พิมพ์ซอร์สโค้ดของรหัสการสาธิตไฟล์ Java:
แพ็คเกจ javase.day18; นำเข้า java.io.filereader; นำเข้า java.io.ioException; ชั้นเรียนสาธารณะ filereaderTest {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ลอง {filereader fr = filereader ใหม่ ("c: //java_test//systemdemo.java"); ถ่าน [] buf = ถ่านใหม่ [1024]; int num = 0; ในขณะที่ ((num = fr.read (buf))! =-1) {system.out.println (สตริงใหม่ (buf, 0, num)); }} catch (ioexception e) {e.printstacktrace (); }}} แพ็คเกจ javase.day18; นำเข้า java.io.filereader; นำเข้า java.io.ioException; ชั้นเรียนสาธารณะ filereaderTest {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ลอง {filereader fr = filereader ใหม่ ("c: //java_test//systemdemo.java"); ถ่าน [] buf = ถ่านใหม่ [1024]; int num = 0; ในขณะที่ ((num = fr.read (buf))! =-1) {system.out.println (สตริงใหม่ (buf, 0, num)); }} catch (ioexception e) {e.printstacktrace (); - คัดลอกรหัสสาธิตไฟล์:
วิธีที่ใช้สำหรับ copy_1 () คือการอ่านอักขระและเขียนอักขระ
วิธีการที่ใช้โดย copy_2 () คือการอ่านอักขระลงในอาร์เรย์อักขระในครั้งเดียวและในที่สุดก็เขียนลงในไฟล์เป้าหมายอีกครั้ง
แพ็คเกจ javase.day18; นำเข้า java.io.filereader; นำเข้า java.io.filewriter; นำเข้า java.io.ioException; คลาสสาธารณะ copytext {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ลอง {copy_1 (); } catch (ioexception e) {e.printstacktrace (); }} โมฆะคงที่สาธารณะ copy_1 () พ่น IOException {fileWriter fw = fileWriter ใหม่ ("c: //java_test//copy_systemdemo.java"); filereader fr = filereader ใหม่ ("c: //java_test//systemdemo.java"); int num = 0; ในขณะที่ ((num = fr.read ())! =-1) {fw.write (num); } fw.close (); fr.close (); } โมฆะคงที่สาธารณะ copy_2 () พ่น IOException {fileWriter fw = ใหม่ fileWriter ("c: //java_test//copy_systemdemo.java"); filereader fr = filereader ใหม่ ("c: //java_test//systemdemo.java"); int num = 0; ถ่าน [] buf = ถ่านใหม่ [1024]; ในขณะที่ ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} แพ็คเกจ javase.day18; นำเข้า java.io.filereader; นำเข้า java.io.filewriter; นำเข้า java.io.ioException; คลาสสาธารณะ copytext {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ลอง {copy_1 (); } catch (ioexception e) {e.printstacktrace (); }} โมฆะคงที่สาธารณะ copy_1 () พ่น IOException {fileWriter fw = fileWriter ใหม่ ("c: //java_test//copy_systemdemo.java"); filereader fr = filereader ใหม่ ("c: //java_test//systemdemo.java"); int num = 0; ในขณะที่ ((num = fr.read ())! =-1) {fw.write (num); } fw.close (); fr.close (); } โมฆะคงที่สาธารณะ copy_2 () พ่น IOException {fileWriter fw = ใหม่ fileWriter ("c: //java_test//copy_systemdemo.java"); filereader fr = filereader ใหม่ ("c: //java_test//systemdemo.java"); int num = 0; ถ่าน [] buf = ถ่านใหม่ [1024]; ในขณะที่ ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); fr.close (); - บัฟเฟอร์สำหรับสตรีมอักขระ:
การเกิดขึ้นของบัฟเฟอร์ช่วยเพิ่มประสิทธิภาพการอ่านและการเขียนข้อมูล
คลาสที่สอดคล้องกัน: BufferedWriter, BufferedReader
บัฟเฟอร์จะต้องรวมกับสตรีมก่อนที่จะสามารถใช้งานได้
ฟังก์ชั่นของการไหลได้รับการปรับปรุงตามการไหล
กฎพื้นฐานของการดำเนินการสตรีม IO:
1. ล้างแหล่งที่มาและวัตถุประสงค์:
ที่มา: อินพุตสตรีม, เครื่องอ่าน
วัตถุประสงค์: OutputStream นักเขียน
2. ไม่ว่าข้อมูลของการดำเนินการจะเป็นข้อความธรรมดาหรือไม่:
ใช่: สตรีมอักขระหมายเลข: ไบต์สตรีมคือ: (1) เมื่อใช้เครื่องอ่านสำหรับสตรีมอักขระอินพุต
(2) ใช้ InputStream สำหรับสตรีมไบต์อินพุต
(3) ใช้สตรีมอักขระสำหรับเอาต์พุต
(4) เมื่อใช้ outputstream สำหรับกระแสไบต์เอาต์พุต
3. เมื่อระบบชัดเจนจากนั้นชี้แจงวัตถุเฉพาะที่จะใช้:
อุปกรณ์ต้นทาง: หน่วยความจำ, ฮาร์ดดิสก์, อุปกรณ์ปลายทางแป้นพิมพ์: หน่วยความจำ, ฮาร์ดดิสก์, คอนโซล, คอนโซล
IO Operation Tool Class
[1] String FilerEaderTringHandle (ชื่อไฟล์สตริง)
อ่านไฟล์ (ระบุโดยชื่อไฟล์) ลงในสตริง
[2] byte [] filereaderbytehandle (ชื่อไฟล์สตริง)
อ่านไฟล์ (ระบุโดยชื่อไฟล์) ลงในอาร์เรย์ไบต์
[3] Void FileWriterHandle (ชื่อไฟล์สตริง, ข้อความสตริง)
เขียนสตริง (ระบุโดยข้อความ) ไปยังไฟล์ (ระบุโดยชื่อไฟล์)
ioutil.java
นำเข้า java.io.bufferedInputStream; นำเข้า java.io.bufferedreader; นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.filereader; นำเข้า java.io.ioexception; นำเข้า Java.io.printwriter (การให้วิธีการอ่านแบบอ่าน) * * @param filename * @return string */ String String สาธารณะ FilerEaderTringHandle (ชื่อไฟล์สตริง) {StringBuilder sb = new StringBuilder (); ลอง {bufferedReader ใน = bufferedReader ใหม่ (filereader ใหม่ (ไฟล์ใหม่ (ชื่อไฟล์) .getAbsoluteFile ())); ลอง {String s; ในขณะที่ ((s = in.readline ())! = null) {sb.append (s); sb.append ("/n"); }} ในที่สุด {in.close (); }} catch (ioexception e) {โยน runtimeException ใหม่ (e); } return sb.toString (); } / ** * ใช้ FileInputStream+bufferedInputStream เพื่อประมวลผลไฟล์ในวิธีไบต์ * * @param filename * @return byte [] * / ไบต์คงที่สาธารณะ [] filereaderByteHandle (ชื่อไฟล์สตริง) {byte [] data = null; ลอง {bufferedInputStream bf = ใหม่ bufferedInputStream (ใหม่ FileInputStream (ชื่อไฟล์)); ลอง {data = byte ใหม่ [bf.available ()]; bf.read (ข้อมูล); } ในที่สุด {bf.close (); }} catch (ioexception e) {โยน runtimeException ใหม่ (e); } return data == null? ไบต์ใหม่ [] {}: ข้อมูล; } / ** * เขียนข้อความที่ระบุไปยังไฟล์ชื่อ filename * * @param filename * @param text * / โมฆะสาธารณะคงที่ filewriterhandle (ชื่อไฟล์สตริง, ข้อความสตริง) {ลอง {printwriter out = printwriter ใหม่ (ไฟล์ใหม่ (ชื่อไฟล์) .getAbsoluteFile ()); ลอง {out.print (ข้อความ); } ในที่สุด {out.close (); }} catch (ioexception e) {โยน runtimeException ใหม่ (e); }} โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น IOException {system.out.print (filereaderstringhandle ("src/ioutil.java")); สำหรับ (byte b: filereaderbytehandle ("src/ioutil.java")) system.out.print (b); FileWriterHandle ("zj.txt", filereaderstringhandle ("src/ioutil.java")); -