Quad the Javadoc :
สตรีมมีเมธอด BaseStream.close () และใช้ AutoCloseable แต่อินสแตนซ์สตรีมเกือบทั้งหมดไม่จำเป็นต้องปิดจริงหลังการใช้งาน โดยทั่วไปเฉพาะสตรีมที่มีแหล่งที่มาเป็นแชนเนล IO (เช่นที่ส่งคืนโดย Files.lines (Path, Charset)) เท่านั้นที่จะต้องปิด สตรีมส่วนใหญ่ได้รับการสนับสนุนโดยคอลเลกชันอาร์เรย์หรือการสร้างฟังก์ชั่นซึ่งไม่จำเป็นต้องมีการจัดการทรัพยากรพิเศษ (หากกระแสต้องปิดก็สามารถประกาศเป็นทรัพยากรในงบลองกับทรัพยากร)
"เกือบทั้งหมด" และ "โดยทั่วไป" นั้นคลุมเครือ - ถ้าคุณกำลังเขียนไลบรารีและคุณกำลังสรุปแหล่งที่มาของสตรีมของคุณจากผู้ใช้สตรีมนั้นคุณต้องถามตัวเองเสมอ - "ฉันควรปิดหรือไม่ นี้?" IO-ได้รับการสนับสนุนสตรีมจะต้องมีการปิดเพราะการดำเนินงานสถานีไม่ได้เรียกclose
เพื่อให้ได้อย่างมีประสิทธิภาพฉันมักจะมีทั้งจำ / เอกสารที่สตรีมของฉันมาจากหรือฉันมักจะต้องclose
มัน
ตัวเลือกนิวเคลียร์ที่ฉันคิดว่าน่าจะไม่ส่งคืนสตรีมจากวิธีการหรือยอมรับพารามิเตอร์สตรีมซึ่งเป็นความเชื่อมั่นที่บางคนสะท้อนในทีม JDK ฉันพบว่ามัน จำกัด มากเกินไปเมื่อพิจารณาถึงประโยชน์ในทางปฏิบัติของสตรีม
อะไรคือวิธีปฏิบัติที่ดีที่สุดของคุณเกี่ยวกับการปิดสายธาร ฉันดูออนไลน์เพื่อหาคำตอบสำหรับเรื่องนี้จากบางคนของ JDK ที่มักจะใช้งานกับคำถามชุมชนที่คล้ายกัน แต่ไม่พบสิ่งใดที่เกี่ยวข้อง