1. Files
ชั้นเรียน
ในการทำงานกับไฟล์ มีคลาสยูทิลิตี้ที่ลื่นjava.nio.file.Files
— มีวิธีการสำหรับทุกโอกาส วิธีการทั้งหมดของคลาสนี้เป็นแบบคงที่และทำงานบนวัตถุเส้นทาง มีหลายวิธี ดังนั้นเราจะพิจารณาเฉพาะวิธีที่สำคัญที่สุด:
วิธี | คำอธิบาย |
---|---|
|
สร้างไฟล์ใหม่ที่มีเส้นทางpath |
|
สร้างไดเร็กทอรีใหม่ |
|
สร้างหลายไดเร็กทอรี |
|
สร้างไฟล์ชั่วคราว |
|
สร้างไดเร็กทอรีชั่วคราว |
|
ลบไฟล์หรือไดเร็กทอรีหากว่างเปล่า |
|
คัดลอกไฟล์ |
|
ย้ายไฟล์ |
|
ตรวจสอบว่าเส้นทางเป็นไดเร็กทอรีไม่ใช่ไฟล์หรือไม่ |
|
ตรวจสอบว่าเส้นทางเป็นไฟล์ไม่ใช่ไดเร็กทอรีหรือไม่ |
|
ตรวจสอบว่ามีวัตถุอยู่ที่เส้นทางที่กำหนดหรือไม่ |
|
ส่งกลับขนาดไฟล์ |
|
ส่งกลับเนื้อหาทั้งหมดของไฟล์เป็นอาร์เรย์ของไบต์ |
|
ส่งกลับเนื้อหาทั้งหมดของไฟล์เป็นสตริง |
|
ส่งกลับเนื้อหาทั้งหมดของไฟล์เป็นรายการสตริง |
|
เขียนอาร์เรย์ของไบต์ลงในไฟล์ |
|
เขียนสตริงลงในไฟล์ |
|
ส่งคืนชุดของไฟล์ (และไดเร็กทอรีย่อย) จากไดเร็กทอรีที่กำหนด |
2. การสร้างไฟล์และไดเรกทอรี
ไฟล์และไดเร็กทอรีนั้นสร้างได้ง่ายมาก ลองโน้มน้าวใจตัวเองด้วยตัวอย่าง:
รหัส | บันทึก |
---|---|
|
สร้างไฟล์ |
|
สร้างไดเร็กทอรี |
|
สร้างไดเร็กทอรีและไดเร็กทอรีย่อยที่จำเป็นทั้งหมดหากไม่มีอยู่ |
3. การคัดลอก ย้าย และลบ
การคัดลอก ย้าย และลบไฟล์นั้นง่ายพอๆ กัน สิ่งนี้ใช้กับไดเร็กทอรีด้วย แต่ต้องว่างเปล่า
รหัส | บันทึก |
---|---|
|
คัดลอกไฟล์ |
|
ย้ายและเปลี่ยนชื่อไฟล์ |
|
ลบไฟล์ |
4. การตรวจสอบประเภทและการมีอยู่ของไฟล์
เมื่อคุณมีเส้นทางที่คนอื่นให้มา คุณต้องการทราบว่าเป็นไฟล์หรือไดเร็กทอรี และโดยทั่วไปแล้ว ไฟล์/ไดเร็กทอรีดังกล่าวมีอยู่หรือไม่?
มีวิธีพิเศษสำหรับสิ่งนี้เช่นกัน คุณยังสามารถค้นหาความยาวของไฟล์ได้อย่างง่ายดาย:
รหัส | บันทึก |
---|---|
|
|
|
|
|
|
|
|
5. การทำงานกับเนื้อหาไฟล์
สุดท้าย มีวิธีการทั้งหมดที่ช่วยให้อ่านหรือเขียนเนื้อหาของไฟล์ได้ง่าย ตัวอย่าง:
รหัส | คำอธิบาย |
---|---|
|
อ่านเนื้อหาของไฟล์เป็นรายการสตริง แสดงสตริง |
6. รับเนื้อหาของไดเร็กทอรี
วิธีการที่น่าสนใจที่สุดยังคงอยู่ ใช้เพื่อรับไฟล์และไดเร็กทอรีย่อยในไดเร็กทอรีที่กำหนด
เรากำลังพูดถึงnewDirectoryStream()
เมธอดซึ่งส่งคืนDirectoryStream<Path>
วัตถุ พิเศษ มีตัววนซ้ำ (!) ที่คุณสามารถใช้เพื่อรับไฟล์และไดเร็กทอรีย่อยทั้งหมดของไดเร็กทอรีที่กำหนด
มันง่ายกว่าที่คิด
รหัส | คำอธิบาย |
---|---|
|
รับวัตถุที่มีรายการไฟล์ วนซ้ำรายการไฟล์ |
วัตถุDirectoryStream<Path>
มีสองคุณสมบัติ อย่างแรก มันมีตัววนซ้ำที่ส่งคืนเส้นทางของไฟล์ และเราสามารถใช้วัตถุนี้ภายในลูfor-each
ปได้
และประการที่สอง ออบเจ็กต์นี้เป็นสตรีมข้อมูล ดังนั้นจะต้องปิดอย่างชัดเจนโดยใช้เมธอดclose()
หรือประกาศใช้ภายในtry-with-resources
บล็อก
7. Files.newInputStream
วิธีการ
เริ่มต้นด้วย Java 5 คลาส FileInputStream
and FileOutputStream
เลิกใช้แล้ว ข้อเสียประการหนึ่งคือเมื่อมีการสร้างวัตถุของคลาสเหล่านี้ ไฟล์จะถูกสร้างขึ้นบนดิสก์ทันที และข้อยกเว้นทั้งหมดที่เกี่ยวข้องกับการสร้างไฟล์อาจถูกโยนทิ้งไป
ภายหลังได้รับการยอมรับว่าไม่ใช่การตัดสินใจที่ดีที่สุด ดังนั้น ขอแนะนำให้ใช้เมธอดของjava.nio.Files
คลาสยูทิลิตี้เพื่อสร้างวัตถุไฟล์
ต่อไปนี้คือการเปรียบเทียบระหว่างแนวทางเดิมกับแนวทางใหม่ในการสร้างไฟล์:
ก่อน |
---|
|
หลังจาก |
|
และมีสิ่งทดแทนที่คล้ายกันสำหรับFileOutputStream
:
ก่อน |
---|
|
หลังจาก |
|
GO TO FULL VERSION