1. Pathชั้นเรียน
ถ้าคุณต้องการเขียนโปรแกรมที่ทำบางอย่างกับไฟล์บนดิสก์ นั่นก็ค่อนข้างง่าย Java มีคลาสมากมายที่ช่วยให้คุณทำงานกับทั้งไฟล์และเนื้อหา
Java เวอร์ชันก่อนหน้าใช้คลาสเช่นFileและFileInputStreamเพื่อทำงานกับไฟล์ อย่างไรก็ตามFileคลาสนี้เลิกใช้แล้วและไม่แนะนำให้ใช้ แน่นอน คุณอาจพบมันในโค้ด พารามิเตอร์เมธอด หรือตัวสร้างคลาส
ตั้งแต่เริ่มแรก เราจะเริ่มเรียนรู้วิธีการทำงานกับไฟล์โดยใช้Pathชั้นเรียน Pathเป็นคลาสที่แทนที่File. ปลอดภัยและมีประสิทธิภาพมากขึ้น
Pathระดับ
ในทางเทคนิคแล้วPathไม่ใช่คลาส แต่เป็นอินเทอร์เฟซ สิ่งนี้ทำขึ้นเพื่ออนุญาตให้เขียนลูกหลานของPathคลาสสำหรับแต่ละระบบปฏิบัติการ (และระบบไฟล์)
Windows มีมาตรฐานเดียวสำหรับการเขียนเส้นทางไฟล์ และ Linux มีอีกมาตรฐานหนึ่ง แน่นอนว่ามีระบบปฏิบัติการอื่นๆ มากมายในโลก และแต่ละระบบก็มีมาตรฐานของตัวเอง
นั่นเป็นสาเหตุที่Pathอินเทอร์เฟซถูกใช้ทุกที่ในวิธีการทำงานกับไฟล์ แม้ว่าในความเป็นจริงแล้วงานจะเกิดขึ้นผ่านคลาสที่สืบทอดมา: WindowsPath, UnixPath, ...
การสร้างPathวัตถุ
ในการสร้างPathวัตถุ (ซึ่งจริง ๆ แล้วจะเป็นวัตถุของWindowsPathคลาสที่สืบทอดมา) คุณต้องใช้คำสั่งดังนี้:
Path name = Path.of(path);
nameชื่อของ ตัวแปร อยู่ที่ไหนPathและpathเป็นเส้นทางไปยังไฟล์ (หรือไดเร็กทอรี) รวมถึงชื่อของไฟล์ (หรือไดเร็กทอรี) และofเป็นเมธอดแบบสแตติกของPathคลาส
วิธีการ นี้of()ใช้เพื่อสร้างWindowsPathวัตถุหากโปรแกรมทำงานบน Windows หากโปรแกรมทำงานบน Linux UnixPathวัตถุจะถูกสร้างขึ้น คุณไม่สามารถสร้างPathวัตถุโดยใช้รหัสเช่น.new Path()
ตัวอย่าง:
| รหัส | บันทึก |
|---|---|
|
เส้นทางไปยังไฟล์ |
|
พาธไปยังไดเร็กทอรี |
ไฟล์ (หรือไดเร็กทอรี) ไม่จำเป็นต้องมีอยู่เพื่อให้Pathวัตถุที่ถูกต้องมีอยู่ บางทีคุณอาจต้องการสร้างไฟล์... อPathอบเจกต์ก็เหมือนการเติมข้อมูลString: มันไม่ได้เชื่อมโยงกับไฟล์เฉพาะบนดิสก์ - มันแค่เก็บเส้นทางบางอย่างบนดิสก์ แค่นั้นแหละ.
2. วิธีการPathประเภท
อินPathเทอร์เฟซมีวิธีการที่น่าสนใจค่อนข้างน้อย สิ่งที่น่าสนใจที่สุดแสดงอยู่ในตารางด้านล่าง
| วิธี | คำอธิบาย |
|---|---|
|
ส่งคืนไดเร็กทอรีหลัก |
|
ส่งกลับชื่อไฟล์โดยไม่มีไดเร็กทอรี |
|
ส่งคืนไดเรกทอรีรากจากเส้นทาง |
|
ตรวจสอบว่าเส้นทางปัจจุบันเป็นแบบสัมบูรณ์หรือไม่ |
|
แปลงเส้นทางเป็นแบบสัมบูรณ์ |
|
ลบสัญลักษณ์แทนในชื่อไดเร็กทอรี |
|
สร้างเส้นทางสัมบูรณ์ใหม่จากเส้นทางสัมบูรณ์และสัมพัทธ์ |
|
รับเส้นทางสัมพัทธ์จากสองเส้นทางสัมบูรณ์ |
|
ตรวจสอบว่าเส้นทางปัจจุบันเริ่มต้นด้วยเส้นทางที่กำหนดหรือไม่ |
|
ตรวจสอบว่าเส้นทางปัจจุบันลงท้ายด้วยเส้นทางที่กำหนดหรือไม่ |
|
แยกพาธออกเป็นส่วนๆ โดยใช้/เป็นตัวคั่น ส่งกลับจำนวนชิ้นส่วน |
|
แยกพาธออกเป็นส่วนๆ โดยใช้/เป็นตัวคั่น คืนค่าส่วนหนึ่งตามดัชนี |
|
แยกพาธออกเป็นส่วนๆ โดยใช้/เป็นตัวคั่น ส่งกลับเส้นทางย่อยที่สอดคล้องกับช่วงเวลาที่กำหนด |
|
แปลงPathวัตถุให้เป็นFileวัตถุ ที่เลิกใช้แล้ว |
|
แปลงPathวัตถุเป็นURIวัตถุ |
ด้านล่างนี้เป็นคำอธิบายโดยย่อของวิธีการที่มีอยู่
3. แบ่งเส้นทางออกเป็นส่วนๆ
วิธีgetParent()การส่งคืนเส้นทางที่ชี้ไปยังไดเร็กทอรีหลักสำหรับเส้นทางปัจจุบัน ไม่ว่าพาธนี้จะเป็นไดเร็กทอรีหรือไฟล์ก็ตาม:
| รหัส | ค่า |
|---|---|
|
|
|
|
|
|
เมธอดgetFileName()ส่งคืนชื่อไฟล์เดียว (หรือไดเร็กทอรี) — อะไรก็ตามที่อยู่หลังตัวคั่นสุดท้าย:
| รหัส | ค่า |
|---|---|
|
|
|
|
|
|
เมธอดgetRoot()ส่งคืนพาธไปยังไดเร็กทอรีรูท:
| รหัส | ค่า |
|---|---|
|
|
4. เส้นทางสัมบูรณ์และสัมพัทธ์
เส้นทางมีสองประเภท: แบบสัมบูรณ์และแบบสัมพัทธ์ เส้นทางที่แน่นอนเริ่มต้นจากไดเร็กทอรีรูท สำหรับ Windows นี่อาจเป็นc:\โฟลเดอร์ สำหรับ Linux — /ไดเร็กทอรี
เส้นทางสัมพัทธ์มีความหมายโดยสัมพันธ์กับบางไดเร็กทอรี นั่นคือมันเหมือนจุดสิ้นสุดของถนน แต่ไม่มีจุดเริ่มต้น คุณสามารถเปลี่ยนเส้นทางสัมพัทธ์ให้เป็นเส้นทางสัมบูรณ์และในทางกลับกันได้
boolean isAbsolute()วิธี
เมธอดตรวจสอบว่าเส้นทางปัจจุบันเป็นแบบสัมบูรณ์หรือไม่
| รหัส | ค่า |
|---|---|
|
|
|
|
Path toAbsolutePath()วิธี
แปลงเส้นทางเป็นแบบสัมบูรณ์ หากจำเป็น ให้เพิ่มไดเร็กทอรีการทำงานปัจจุบัน:
| รหัส | ค่า |
|---|---|
|
|
|
|
Path normalize()วิธี
ในเส้นทาง แทนที่จะเป็นชื่อไดเร็กทอรี คุณสามารถเขียน ".." ซึ่งหมายถึงย้อนกลับหนึ่งไดเร็กทอรี การทำให้เป็นมาตรฐานจะกำจัดสิ่งเหล่านี้ ตัวอย่าง:
| รหัส | ค่า |
|---|---|
|
|
|
|
Path relativize(Path other)วิธี
วิธีการ นี้relativize()ช่วยให้คุณสร้าง "ความแตกต่างระหว่างเส้นทาง": เส้นทางหนึ่งสัมพันธ์กับอีกเส้นทางหนึ่ง
| รหัส | ค่า |
|---|---|
|
|
|
|
|
IllegalArgumentException: เส้นทางทั้งสองมี "รูท" ที่แตกต่างกัน (ดิสก์ที่แตกต่างกัน) |
Path resolve(Path other)วิธี
วิธีการ นี้resolve()ตรงกันข้ามกับrelativize(): มันสร้างเส้นทางสัมบูรณ์ใหม่จากเส้นทางสัมบูรณ์และเส้นทางสัมพัทธ์
| รหัส | ค่า |
|---|---|
|
|
|
|
toFile()วิธี
เมธอดส่งคืนFileวัตถุที่เลิกใช้แล้วซึ่งเก็บเส้นทางไฟล์เดียวกันกับPathวัตถุ
toURI()วิธี
เมธอดแปลงพาธเป็นURI มาตรฐาน และส่งกลับวัตถุที่มีพาธไปยังไฟล์:
| เส้นทางไปยังไฟล์ | URI ไปยังไฟล์ |
|---|---|
|
|
GO TO FULL VERSION