Path: การแทนตำแหน่งไฟล์
สร้างออบเจ็กต์ Path แก้เส้นทางให้สมบูรณ์และเป็นเส้นทางสัมพัทธ์ รวมถึงจัดการส่วนประกอบของเส้นทาง
Path: การแทนตำแหน่งไฟล์ เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
บทนำสู่ Path
อินเทอร์เฟซ java.nio.file.Path แทนตำแหน่งของไฟล์หรือไดเรกทอรีในระบบไฟล์ โดยมาแทนคลาสเดิม java.io.File ด้วย API ที่มีความสามารถมากกว่าและทำงานได้โดยไม่ขึ้นกับแพลตฟอร์ม
import java.nio.file.*;
Path p1 = Path.of("/home/user/documents/report.txt");
Path p2 = Paths.get("/home", "user", "documents", "report.txt");
System.out.println(p1); // /home/user/documents/report.txt
System.out.println(p1.equals(p2)); // trueองค์ประกอบของ Path
ดึงองค์ประกอบของ Path:
Path path = Path.of("/home/user/docs/report.txt");
System.out.println(path.getFileName()); // report.txt
System.out.println(path.getParent()); // /home/user/docs
System.out.println(path.getRoot()); // /
System.out.println(path.getNameCount()); // 4
System.out.println(path.getName(0)); // home
System.out.println(path.getName(3)); // report.txtPath แบบสัมพัทธ์และแบบสัมบูรณ์
Path อาจเป็นแบบสัมบูรณ์ (เริ่มจากราก) หรือแบบสัมพัทธ์ (เริ่มจากไดเรกทอรีปัจจุบัน) ใช้ isAbsolute() เพื่อตรวจสอบ และใช้ toAbsolutePath() เพื่อแปลง Path แบบสัมพัทธ์โดยอ้างอิงไดเรกทอรีทำงานปัจจุบัน
Path rel = Path.of("docs/report.txt");
Path abs = Path.of("/home/user/docs/report.txt");
System.out.println(rel.isAbsolute()); // false
System.out.println(abs.isAbsolute()); // true
Path resolved = rel.toAbsolutePath(); // resolves against CWD
System.out.println(resolved);resolve: การรวม Path
resolve(other) ต่อ Path อื่นเข้าท้าย Path ปัจจุบัน หาก other เป็น Path แบบสัมบูรณ์ ระบบจะแทนที่ Path ปัจจุบันทั้งหมด
Path base = Path.of("/home/user");
Path docs = base.resolve("documents");
Path file = docs.resolve("report.txt");
System.out.println(file); // /home/user/documents/report.txt
// Resolving an absolute path replaces:
Path abs = base.resolve(Path.of("/etc/config"));
System.out.println(abs); // /etc/configrelativize: การคำนวณ Path แบบสัมพัทธ์
relativize(other) คำนวณ Path แบบสัมพัทธ์จาก Path นี้ไปยัง other:
Path from = Path.of("/home/user");
Path to = Path.of("/home/user/docs/report.txt");
Path rel = from.relativize(to);
System.out.println(rel); // docs/report.txt
// Verify:
System.out.println(from.resolve(rel)); // /home/user/docs/report.txtnormalize: การลบส่วนซ้ำซ้อน
normalize() ลบส่วน . และ .. ออกจาก Path:
Path messy = Path.of("/home/user/../user/./docs/./report.txt");
Path clean = messy.normalize();
System.out.println(clean); // /home/user/docs/report.txtstartsWith และ endsWith
ตรวจสอบความสัมพันธ์ของคำนำหน้าและคำต่อท้ายระหว่าง Path:
Path p = Path.of("/home/user/docs/report.txt");
System.out.println(p.startsWith("/home/user")); // true
System.out.println(p.startsWith("/home/other")); // false
System.out.println(p.endsWith("report.txt")); // true
System.out.println(p.endsWith("docs/report.txt")); // trueการแปลงเป็น File และ URI
แปลง Path เป็นคลาส File เดิมหรือ URI เมื่อต้องการ:
Path path = Path.of("/home/user/report.txt");
java.io.File file = path.toFile();
System.out.println(file.exists()); // depends on filesystem
java.net.URI uri = path.toUri();
System.out.println(uri); // file:///home/user/report.txtPath บนแพลตฟอร์มต่างกัน
Path.of() ใช้ตัวคั่นของแพลตฟอร์ม บน Windows Path ใช้แบ็กสแลช ส่วน Unix ใช้ฟอร์เวิร์ดสแลช API จะจัดการความแตกต่างนี้ให้โดยอัตโนมัติ
// Portable path construction (works on all platforms):
Path config = Path.of("config", "app", "settings.json");
// On Unix: config/app/settings.json
// On Windows: config\app\settings.json
System.out.println(config);การวนซ้ำองค์ประกอบของ Path
ใช้ลูป for-each หรือ iterator() เพื่อวนซ้ำองค์ประกอบชื่อแต่ละรายการ:
Path path = Path.of("/home/user/docs/report.txt");
for (Path element : path) {
System.out.println(element); // home, user, docs, report.txt
}
// Note: root ("/") is not included in iterationsubpath: การดึงส่วนย่อย
subpath(begin, end) ส่งคืน Path แบบสัมพัทธ์สำหรับช่วงขององค์ประกอบชื่อ:
Path p = Path.of("/home/user/docs/report.txt");
// Indices: home=0, user=1, docs=2, report.txt=3
System.out.println(p.subpath(1, 3)); // user/docs
System.out.println(p.subpath(0, 2)); // home/userตรวจสอบความเข้าใจอย่างรวดเร็ว
กำหนดให้ Path.of("/home/user").resolve("docs/file.txt") ผลลัพธ์คืออะไร
ทบทวน: API ของ Path
ประเด็นสำคัญ:
- Path.of() / Paths.get() สร้างอินสแตนซ์ของ Path
- getFileName, getParent, getRoot, getName, getNameCount ใช้ดึงองค์ประกอบ
- resolve() ต่อท้าย; relativize() คำนวณ Path แบบสัมพัทธ์; normalize() ล้าง ./ ../
- startsWith/endsWith ใช้ตรวจสอบคำนำหน้าและคำต่อท้าย
- ไม่ขึ้นกับแพลตฟอร์ม — ระบบจัดการตัวคั่นให้อัตโนมัติ
คำถามที่พบบ่อย
บทเรียน “Path: การแทนตำแหน่งไฟล์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Path: การแทนตำแหน่งไฟล์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Path: การแทนตำแหน่งไฟล์”
สร้างออบเจ็กต์ Path แก้เส้นทางให้สมบูรณ์และเป็นเส้นทางสัมพัทธ์ รวมถึงจัดการส่วนประกอบของเส้นทาง คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “Path: การแทนตำแหน่งไฟล์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Path: การแทนตำแหน่งไฟล์
- ยูทิลิตี Files: อ่าน เขียน คัดลอก ย้าย
- การเดินสำรวจต้นไม้ไดเรกทอรีด้วย Files.walk
- WatchService: การตรวจติดตามการเปลี่ยนแปลงไฟล์