สตรีมอินพุตและเอาต์พุต
การป้อนข้อมูลไฟล์และส่งออก FileInputStream และ FileOutputStream มีหน้าที่รับผิดชอบในการดำเนินการอินพุตและเอาต์พุตตามลำดับของไฟล์ดิสก์โลคัล
[ตัวอย่าง] สร้างไฟล์ผ่านโปรแกรมป้อนอักขระจากคีย์บอร์ดสิ้นสุดเมื่อพบอักขระ "#" และเนื้อหาทั้งหมดของไฟล์จะปรากฏบนหน้าจอ
นำเข้า Java.io.*; Class EP10_5 {โมฆะคงที่หลัก (String args []) {Char Ch; ใหม่ FileOutputStream ("EP10_5"); '#') {b.write (ch);} a.close (); (FileDescriptor.out); ) {System.out.println ("ไม่พบไฟล์นี้!")} catch (ioexception e) {}}}
Filedescriptor เป็นคลาสใน Java.io อินพุตมาตรฐาน
[ตัวอย่าง] ใช้การสำรองข้อมูลของไฟล์กราฟิกไบนารี (.gifs)
นำเข้า java.io.*; คลาส EP10_6 {โมฆะคงที่สาธารณะหลัก (สตริง args []) พ่น IOException {fileInputStream a = ใหม่ fileInputStream ("ep10_6.gif"); System .Out.println ("ขนาดไฟล์คือ"+A.Available ()); อาร์เรย์ b.write (c); ;
การไหลของตัวกรอง
FilterInputStream และ FileOutputStream เป็น subclasses โดยตรงของ inputstream และ outputstream
สตรีมการกรองที่ใช้กันทั่วไปสองแบบคือ Data Input Stream DatainputStream และ Data Output Stream DataOutputStream วิธีการก่อสร้างคือ:
DatainputStream (InputStream In);
เนื่องจาก DatainputStream และ DataOutputStream ใช้การดำเนินการอ่านและเขียนที่จัดรูปแบบที่กำหนดไว้ใน Datainput และ DataOutput Interfaces (อินเทอร์เฟซทั้งสองระบุวิธีการป้อนข้อมูลและเอาต์พุตของข้อมูลประเภทพื้นฐาน) จะเห็นได้จากวิธีการก่อสร้างที่สตรีมอินพุตและเอาต์พุตถูกใช้ตามลำดับเป็นพารามิเตอร์วิธีการก่อสร้างของกระแสข้อมูลอินพุตและกระแสเอาต์พุตนั่นคือเป็นสตรีมกรองพวกเขาจะต้องเชื่อมต่อกับสตรีมข้อมูลที่สอดคล้องกัน
คลาส DatainputStream และ DataOutputStream ให้วิธีการอ่านและการเขียนจำนวนมากสำหรับข้อมูลประเภทต่าง ๆ
[ตัวอย่าง] เขียนหมายเลข INT สามหมายเลข 100, 0 และ -100 ไปยังไฟล์ข้อมูล EP10_6.DAT
นำเข้า Java.io.*; Class EP10_7 {โมฆะสาธารณะคงที่หลัก (String args []) {String filename = "EP10_7.dat"; DataOrmputStream เชื่อมต่อกับ FileOfputStream เพื่อส่งออก DataOtUtputStream ประเภทต่าง ๆ A = ใหม่ DataOfputStream (FileOdputStream ใหม่ (ชื่อไฟล์)); } catch (ioexception i) {system.out.println ("เกิดข้อผิดพลาด!"+ชื่อไฟล์);}}}}
หลังจากทำงานแล้วให้สร้างไฟล์ข้อมูล EP10_7.dat ในไดเรกทอรีโปรแกรม
00 00 00 64 00 00 00 00 ff ff ff 9c
[ตัวอย่าง] อ่านหมายเลข INT สามตัวในไฟล์ข้อมูล EP10_6.DAT, ผลรวมและการแสดงผล
นำเข้า java.io.*; คลาส EP10_8 {โมฆะคงที่สาธารณะ (สตริง args []) {สตริง filename = "d: //myjava/ep10_7.dat"; ใหม่ BufferedInputStream (ใหม่ FileInputStream (ชื่อไฟล์))); + ผลรวม); A.close ();
ผลการทำงาน:
ผลรวมของสามตัวเลขคือ: 0
วิธีการอ่านสามารถอ่าน 4 ไบต์จากกระแสอินพุตและเอาต์พุตและมีส่วนร่วมโดยตรงในการดำเนินการเป็นข้อมูลประเภท int เนื่องจากคุณรู้อยู่แล้วว่ามี 3 ข้อมูลในไฟล์คุณสามารถใช้คำสั่งอ่าน 3 ฉบับ แต่คุณควรทำอย่างไรถ้าคุณรู้ว่ามีข้อมูลประเภท INT ในไฟล์ แต่ไม่ทราบจำนวนข้อมูล ? เนื่องจากหากการดำเนินการอ่านข้อมูลของ DatainputStream นั้นจะถูกโยน eOfexception จะถูกโยนลงในตอนท้ายของไฟล์การดำเนินการอ่านสามารถนำไปลองได้
ลอง {ในขณะที่ (จริง) sum+= a.readint ();} catch (eofexception e) {system.out.pritnln ("ผลรวมของสามตัวเลขคือ:"+ผลรวม);
Eofexception เป็นคลาสย่อยของ IOException
[ตัวอย่าง] ป้อนจำนวนเต็มจากแป้นพิมพ์และค้นหาผลรวมของตัวเลขของตัวเลข
นำเข้า Java.io.*; Class EP10_9 {โมฆะคงที่หลัก (String args []) พ่น IOException {DatainputStream A = ใหม่ DatainputStream (System.in); B = A.ReadInt (); sum = sum+d;
ผลการทำงาน:
โปรดป้อนจำนวนเต็ม: 26842403082 ผลรวมของตัวเลข = 31
ควรสังเกตว่าข้อมูลอินพุต 26 ได้กลายเป็น 842403082 เหตุผลก็คือข้อมูลอินพุตไม่สอดคล้องกับรูปแบบของประเภทข้อมูลพื้นฐาน มันแสดงเพียง 2 และ 6 ข้อมูลสองตัวอักษรไบต์ไม่ใช่รหัสไบต์ที่แทนจำนวนเต็ม 26
ในการรับจำนวนเต็มจากแป้นพิมพ์คุณต้องอ่านสตริงก่อนจากนั้นใช้วิธีอื่นเพื่อแปลงสตริงเป็นจำนวนเต็ม
อินพุตและเอาต์พุตมาตรฐาน
System.in, System.out และ System.err ถูกกำหนดไว้ในแพ็คเกจ java.lang.system
อินพุตมาตรฐาน: Input System.in เป็นวัตถุของคลาส BufferedInputStream . ข้อมูลไบนารีของส่งคืนข้อมูลจำนวนเต็มด้วยไบต์นี้เป็นไบต์ต่ำและไบต์สูงเป็น 0
เอาท์พุทมาตรฐาน: ระบบเอาต์พุตมาตรฐาน OUT เป็นวัตถุของ PrintStream Class PrintStream คลาส PrintStream เป็นคลาสย่อยของ FilterOutputStream คลาสเอาต์พุตที่กรองซึ่งกำหนดวิธีการพิมพ์ () และ println () ที่ส่งออกข้อมูลประเภทต่างๆไปยังหน้าจอ
เอาต์พุตข้อผิดพลาดมาตรฐาน: System.err ใช้เพื่อแสดงข้อความแสดงข้อผิดพลาดไปยังผู้ใช้และยังเป็นสตรีมข้อผิดพลาดที่ได้จากคลาส PrintStream ฟังก์ชั่นของสตรีม Err คือการพิมพ์ข้อมูล () และ println () ข้อมูลเอาต์พุตไปยังสตรีม ERR และแสดงบนหน้าจอเพื่อความสะดวกของผู้ใช้ในการใช้และโปรแกรมแก้ไขข้อบกพร่อง
[ตัวอย่าง] ป้อนสตริงของอักขระเพื่อแสดงและแสดงคลาสที่ System.in และ System.out เป็นของ
นำเข้า java.io.*; คลาส EP10_10 {โมฆะคงที่สาธารณะหลัก (สตริง args []) {ลอง {byte a [] = byte ใหม่ [128]; String: "); int count = system.in.read (a); // อ่านอินพุตมาตรฐานและส่งออก system.out.println (" อินพุตคือ: "); สำหรับ (int i = 0; i <count; i ++) System.out.print (a [i]+""); // carriage return และ breaks line จะไม่แสดง system.out.print ((char) a [i]+""); หมายเลขคือ: "+count); คลาส inclass = system.in.getClass (); คลาส outclass = system.out.getClass (); system.out.println (" ในคลาสที่รายการคือ: "+inclass.t OSTRING ()); System.out.println ("ออกคลาสที่" ออกคือ: "+Outclass.toString ());} catch (ioexception e) {}}}
ผลการทำงานมีดังนี้:
ควรสังเกตว่าหลังจากป้อนอักขระ 3 ตัวแล้วกด ENTER ผลลัพธ์ผลลัพธ์จะแสดงเป็น 5 อักขระ นี่เป็นเพราะการคืนค่าการขนส่งถือเป็นตัวละครสองตัวในชวาตัวหนึ่งคือการคืนค่าการขนส่งกับASCⅱ 13 และอีกตัวหนึ่งเป็นเส้นแบ่งที่มีค่า 10 ในโปรแกรม getClass () และ toString () เป็นวิธีการของคลาสวัตถุซึ่งใช้ตามลำดับเพื่อส่งคืนคลาสที่สอดคล้องกันไปยังวัตถุปัจจุบันและส่งคืนการแสดงสตริงของวัตถุปัจจุบัน