คำนำ: สตรีม IO ส่วนใหญ่แบ่งออกเป็นสองประเภทคือสตรีมไบต์และสตรีมอักขระ
สังเกต:
1. ใช้ไบต์สตรีมสำหรับไฟล์เสียงรูปภาพและวิดีโอ (ช่วงกว้าง)
2. หากเกี่ยวข้องกับข้อความเท่านั้นให้ใช้สตรีมอักขระ
คัดลอกเนื้อหาข้อความโดยใช้สตรีมไบต์ (ไฟล์อื่น ๆ สามารถเป็นได้)
รหัสมีดังนี้:
นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.filenotfoundexception; นำเข้า java.io.fileoutputstream; นำเข้า java.io.ioException; นำเข้า java.io.Inputstream; นำเข้า Java.io.OUTTREAM; infile = ไฟล์ใหม่ ("src.txt"); // แหล่งที่มาของไฟล์ inputstream ใน = new FileInputStream (Infile); // ไฟล์อินพุตสตรีมไฟล์ outfile = ไฟล์ใหม่ ("tar.txt"); // ไฟล์เป้าหมาย OutputStream OUT = ใหม่ FileOutputStream (outfile); // ไฟล์ส่งออกไฟล์ไบต์ [] buff = byte ใหม่ [1024]; // สร้างบัฟเฟอร์และจัดสรรหน่วยความจำ 1024 ไบต์เพื่อบัฟ int num = 0; ในขณะที่ ((num = in.read (buff))! =-1) {// ตัดสินว่าจำนวนสูงสุดของไบต์ที่อ่านคือ 1024 out.write (buff, 0, num); // out.write (บัฟ); // นี่ก็โอเค แต่เป็นเรื่องง่ายที่จะทำให้เนื้อหาไฟล์ไม่ถูกต้องออก flush (); // สดสตริงบัฟเฟอร์ s = สตริงใหม่ (บัฟ); System.out.println ("เนื้อหาไฟล์คัดลอกสำเร็จ"); System.out.println ("เนื้อหาคัดลอกไฟล์คือ /n"+s); } in.close (); // ปิดสตรีมอินพุต out.close (); // ปิดสตรีมเอาต์พุต // infile.delete (); // ลบไฟล์ต้นฉบับ // outfile.renameto (ไฟล์ใหม่ ("rename.txt")); // เปลี่ยนชื่อไฟล์เอาต์พุต} catch (filenotFoundException e) {e.printStackTrace (); // พิมพ์ข้อมูลข้อยกเว้นบนบรรทัดคำสั่งและเหตุผลสำหรับข้อผิดพลาดในโปรแกรม} catch (ioexception e) {e.printstacktrace (); -คัดลอกเนื้อหาข้อความโดยใช้สตรีมอักขระ (ไฟล์ข้อความเท่านั้น)
รหัสมีดังนี้:
นำเข้า java.io.bufferedreader; นำเข้า java.io.bufferedwriter; นำเข้า java.io.file; นำเข้า java.io.filenotfoundexception; นำเข้า java.io.filereader; นำเข้า java.io.filewriter; นำเข้า Java.io.ioException; infile = ไฟล์ใหม่ ("d: /src.txt"); // ไฟล์ต้นฉบับไฟล์ filereader filereader = new filereader (Infile); // อ่านอักขระไฟล์สตรีม bufferedReader bufferedReader = ใหม่ bufferedReader (filereader); // ใส่อักขระอ่านลงในไฟล์แคช outfile = ไฟล์ใหม่ ("d: /tar.txt"); // ไฟล์เป้าหมาย fileWriter fileWrite = new FileWriter (outfile); // เขียนสตรีมอักขระ bufferedWriter bufferedWriter = ใหม่ bufferedWriter (fileWrite); // ใส่สตรีมอักขระที่จะป้อนลงในสตริงแคช s = ""; string str = ""; ในขณะที่ ((s = bufferedreader.readline ())! = null) {// กำหนดว่าสตรีมอักขระไฟล์ได้รับการอ่าน bufferedWriter.write (s); // แคชสตรีมอักขระถูกเขียนไปยังไฟล์ bufferedWriter.newline (); // อ่านโดยบรรทัดหากพบอักขระใหม่ไลน์, Newline BufferedWriter.flush (); // แคชสด str+= s; } system.out.println ("เนื้อหาคัดลอกไฟล์คือ /n"+str); // ปิดอินพุตและเอาต์พุตสตรีม filereader.close (); bufferedreader.close (); fileWrite.close (); bufferedWriter.close (); bufferedWriter.close (); // infile.delete (); // ลบไฟล์ต้นฉบับ // outfile.renameto (ไฟล์ใหม่ ("rename.txt")); // เปลี่ยนชื่อไฟล์เอาต์พุต} catch (filenotFoundException e) {e.printStackTrace (); // พิมพ์ข้อมูลข้อยกเว้นบนบรรทัดคำสั่งและเหตุผลสำหรับข้อผิดพลาดในโปรแกรม} catch (ioexception e) {e.printstacktrace (); -ภาพประกอบ:
หากคุณต้องการคัดลอกเนื้อหาข้อความโดยการต่อท้ายเนื้อหาไฟล์แทนการเขียนทับให้แก้ไขดังนี้
outputStream out = new fileOutputStream (outfile, true); // ไบต์สตรีม
fileWriter fileWrite = ใหม่ fileWriter (outfile, true); // สตรีมอักขระ
หากคุณต้องการระบุขนาดแคชในสตรีมอักขระให้แก้ไขดังนี้
bufferedWriter bufferedWriter = new BufferedWriter (FileWrite, 1024);