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 ไปยังไฟล์ |
---|---|
|
|