คอมพิวเตอร์การเขียนโปรแกรม

Java: InputStream กระแสการป้อนข้อมูล

Java เหมือนหลายภาษาโปรแกรมที่ทันสมัยรองรับการดำเนินการตามกระแสการป้อนข้อมูล ใน Java InputStream เป็นชั้นฐานสำหรับการสตรีมไบต์ ชั้นนี้เป็นนามธรรมที่มีในหลักสูตรของโปรแกรมที่เราไม่สามารถสร้างตัวอย่างของมัน แต่แพคเกจ io มีชุดของชั้นเรียนที่สืบทอดและขยายการทำงานของ InputStream ที่ ที่จะใช้ชั้นนี้ในรหัสของคุณก็จะต้องนำเข้าจากแพคเกจ java.io.InputStream ต่อไปเราจะพิจารณาการทำงานขั้นพื้นฐานที่ให้ระดับ InputStream และเรียนหลักที่ใช้มัน

วิธีการเรียน InputStream

ก่อนที่จะดำเนินการศึกษารายละเอียดของวิธีการเรียน InputStream ก็ควรจะกล่าวว่ามันดำเนิน closeable และ AutoCloseable อินเตอร์เฟซ อินเตอร์เฟซ closeable บอกเราว่าที่เสร็จสิ้นการทำงานกับการไหลของมันจะต้องจำเป็นต้องปิด นี้จะกระทำโดยใช้วิธีการปิด () เนื่องจากส่วนใหญ่วิธีการเรียน InputStream ในกรณีที่มีข้อผิดพลาดสร้างประเภทยกเว้น IOException การดำเนินงานทั้งหมดที่จำเป็นในการดำเนินการบล็อกลองและวิธีการปิด () จนทำให้หน่วยเพื่อที่จะดีดกลับขึ้นอยู่กับผลการดำเนินงานที่จะลองร่างกาย

อินเตอร์เฟซ AutoCloseable อย่างมีนัยสำคัญจะช่วยลดปริมาณของการบำรุงรักษารหัสเนื่องจากจะช่วยให้ปิด () วิธีการทำงานโดยอัตโนมัติและไม่เพิ่มรหัสของคุณในที่สุดบล็อก หากคุณใช้รุ่นที่เจ็ดหรือในภายหลังของ Java เป็น InputStream สามารถอยู่ในสิ่งที่เรียกว่าลองด้วยทรัพยากรซึ่งการดำเนินการทั้งหมดเพื่อปิดการไหลจะใช้เวลามากกว่า

พิจารณาวิธีการขั้นพื้นฐานของการเรียน InputStream:

  • int (มี) - ส่งกลับจำนวนการอ่านของไบต์;
  • int อ่าน () - ใช้เวลาไบต์ปัจจุบันของทรัพยากรและผลตอบแทนที่เป็นตัวแทนจำนวนเต็ม; ถ้าทุก bytes อ่านถูกส่งกลับ -1;
  • int อ่าน (byte [] บัฟเฟอร์) - อ่านไบต์ในใช้ได้กล่าวว่าบัฟเฟอร์ในรูปแบบของประเภทไบต์อาร์เรย์ (จำนวนไบต์อ่านบัฟเฟอร์เท่ากับขนาดที่ระบุไว้และส่งกลับจำนวนไบต์อ่านประสบความสำเร็จและถ้าไบต์ที่มีอยู่ทั้งหมดอ่านกลับ -1);
  • int อ่าน (byte [] บัฟเฟอร์ int ชดเชยจำนวน int ไบต์) - เกินวิธีการก่อนหน้าจะเป็นสิ่งเดียวกัน แต่มีการระบุไว้ใน "ชดเชย" ตำแหน่งและการอ่านมากที่สุดเท่าที่จะได้รับใน "จำนวนไบต์";
  • นานเฮี๊ยบ (นานนับไบต์) - จำนวนของไบต์ข้ามและผลตอบแทนที่เกิดขึ้นจริงจำนวนพลาด.

InputStream จะดำเนินการหลายชั้นที่ออกแบบมาเพื่อทำงานร่วมกับแหล่งที่มาที่แตกต่างกันและประเภทของข้อมูล ด้านล่างแสดงให้เห็นต้นไม้มรดก

การอ่านไฟล์

Byte กระแสการอ่านข้อมูลจากแฟ้มที่จะดำเนินการ FileInputStream ระดับ เปิดแฟ้มไบต์อ่านมากพอที่จะสร้างตัวอย่างของการเรียนการผ่านไปของตัวสร้างชื่อไฟล์เป็นอาร์กิวเมนต์ หากไฟล์ถูกโอนไปยังชื่อไม่อยู่ก็จะโยนข้อยกเว้นชนิด FileNotFoundException

ในกรณีของการประสบความสำเร็จในการเปิดไฟล์ที่ทำงานกับพวกเขาจะดำเนินการโดยใช้วิธีการที่อธิบายข้างต้นเป็นผู้สืบทอด FileInputStream InputStream

อ่านชนิดข้อมูลดั้งเดิม

ในตัวอย่างข้างต้นอธิบายการทำงานที่มีค่าไบต์ซึ่งสามารถตีความได้ว่าเป็นสัญลักษณ์ แต่ถ้าเราจะต้องอ่านจำนวนเต็มเศษส่วนหรือค่าบูลีน? การทำเช่นนี้ใน Java InputStream อ้อมขยาย DataInputStream ชั้นเรียน ชั้นนี้เป็นเสื้อคลุมสำหรับ InputStream ซึ่งจะถูกส่งไปที่การสร้างเป็นอาร์กิวเมนต์นวกรรมิก ชนิดของหัวข้อนี้อ่านข้อมูลในรูปแบบไบนารี

DataInputStream ยังใช้อินเตอร์เฟซ DataInput และวิธีการสำหรับการอ่านชนิดข้อมูลดั้งเดิม ด้านล่างเป็นรายการของวิธีการเหล่านี้

ชื่อวิธีการพูดเพื่อตัวเอง - แต่ละของพวกเขาถูกออกแบบมาเพื่ออ่านชนิดข้อมูลบางอย่าง

สตรีมใส่บัฟเฟอร์

บัฟเฟอร์กระแสข้อมูลการอ่านจะรู้ระดับ BufferedInputStream ในชวา InputStream เป็นห่อโดยชั้นนี้ ชั้นนี้เสร็จสมบูรณ์บัฟเฟอร์ไหลที่ช่วยให้คุณอ่านในเวลาเดียวกันไม่หนึ่ง แต่หลายไบต์ นี้จะทำให้มันเป็นไปได้อย่างมีนัยสำคัญในการปรับปรุงประสิทธิภาพของการดำเนินการ BufferedInputStream ลูกหลาน InputStream เป็นทางอ้อมและจึงสืบทอดวิธีการทั้งหมดที่กล่าวข้างต้น

ชั้นนี้มีสองก่อสร้าง:

  • BufferedInputStream (สตรีมใส่ InputStream);
  • BufferedInputStream (สตรีมใส่ InputStream, int ขนาดบัฟเฟอร์)

ลายเซ็นของนักออกแบบสามารถเข้าใจได้ว่าครั้งแรกที่กำหนดขนาดของบัฟเฟอร์เริ่มต้นและในครั้งที่สองก็เป็นไปได้ที่จะตั้งด้วยตนเอง

ข้อสรุป

เราได้ตรวจสอบการก่อให้เกิดพื้นฐานของ InputStream หากคุณจำเป็นต้องแปลงไบต์ได้รับการสตริงใน Java InputStream เพื่อสตริง () ที่น่าเสียดายที่ไม่ได้มากเกินไปดังนั้นจึงจะต้องใช้เครื่องมือพิเศษเช่น IOUtils จากห้องสมุด Apache คอมมอนส์

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 th.atomiyme.com. Theme powered by WordPress.