1. Pathkelas
Jika anda ingin menulis program yang melakukan sesuatu dengan fail pada cakera, itu agak mudah. Java mempunyai banyak kelas yang membantu anda bekerja dengan kedua-dua fail itu sendiri dan kandungannya.
Versi awal Java menggunakan kelas seperti Filedan FileInputStreamuntuk berfungsi dengan fail. Walau bagaimanapun, Filekelas itu kini tidak digunakan dan tidak disyorkan untuk digunakan. Sudah tentu, anda mungkin masih menemuinya dalam kod, parameter kaedah atau pembina kelas.
Sejak awal lagi, kami akan mula belajar cara bekerja dengan fail menggunakan kelas Path. Pathialah kelas yang menggantikan File. Ia lebih selamat dan lebih cekap.
Pathkelas
Secara teknikal, Pathia bukan kelas — ia adalah antara muka. Ini dilakukan untuk membenarkan penulisan keturunan kelas Pathuntuk setiap sistem pengendalian (dan sistem fail).
Windows mempunyai satu standard untuk menulis laluan fail, dan Linux mempunyai satu lagi. Sudah tentu, terdapat banyak sistem pengendalian lain di dunia, dan masing-masing mempunyai standardnya sendiri.
Itulah sebabnya Pathantara muka digunakan di mana-mana dalam kaedah yang berfungsi dengan fail, walaupun pada hakikatnya kerja itu berlaku melalui kelas keturunannya: WindowsPath, UnixPath, ...
Mencipta Pathobjek
Untuk mencipta Pathobjek (yang sebenarnya akan menjadi objek kelas WindowsPathketurunan), anda perlu menggunakan pernyataan seperti ini:
Path name = Path.of(path);
Di manakah namenama pembolehubah Path, dan pathmerupakan laluan ke fail (atau direktori) termasuk nama fail (atau direktori). Dan ofadalah kaedah statik kelas Path.
Kaedah ini of()digunakan untuk mencipta WindowsPathobjek jika program dijalankan pada Windows. Jika program berjalan di Linux, maka UnixPathobjek dicipta. Anda tidak boleh mencipta Pathobjek menggunakan kod seperti .new Path()
Contoh:
| Kod | Catatan |
|---|---|
|
Laluan ke fail |
|
Laluan ke direktori |
Fail (atau direktori) tidak perlu wujud untuk Pathobjek yang sah wujud. Mungkin anda hanya ingin mencipta fail... PathObjek adalah seperti suped-up String: ia tidak terikat pada fail tertentu pada cakera — ia hanya menyimpan laluan tertentu pada cakera. Itu sahaja.
2. Kaedah Pathjenis
Antara Pathmuka mempunyai beberapa kaedah yang menarik. Yang paling menarik dibentangkan dalam jadual di bawah.
| Kaedah | Penerangan |
|---|---|
|
Mengembalikan direktori induk |
|
Mengembalikan nama fail tanpa direktori |
|
Mengembalikan direktori akar daripada laluan |
|
Menyemak sama ada laluan semasa adalah mutlak |
|
Menukar laluan kepada mutlak |
|
Mengalih keluar kad bebas dalam nama direktori. |
|
Membina laluan mutlak baharu daripada laluan mutlak dan relatif. |
|
Mendapat laluan relatif daripada dua laluan mutlak. |
|
Menyemak sama ada laluan semasa bermula dengan laluan tertentu |
|
Menyemak sama ada laluan semasa berakhir dengan laluan tertentu |
|
Pisahkan laluan kepada bahagian menggunakan /sebagai pembatas. Mengembalikan bilangan bahagian. |
|
Pisahkan laluan kepada bahagian menggunakan /sebagai pembatas. Mengembalikan bahagian mengikut indeksnya. |
|
Pisahkan laluan kepada bahagian menggunakan /sebagai pembatas. Mengembalikan laluan kecil yang sepadan dengan selang yang diberikan. |
|
Menukar Pathobjek kepada Fileobjek yang tidak digunakan lagi |
|
Menukar Pathobjek kepada URIobjek |
Di bawah adalah penerangan ringkas tentang kaedah sedia ada.
3. Membahagikan laluan kepada bahagian-bahagian
Kaedah ini getParent()mengembalikan laluan yang menunjuk ke direktori induk untuk laluan semasa. Tidak kira sama ada laluan ini ialah direktori atau fail:
| Kod | Nilai |
|---|---|
|
|
|
|
|
|
Kaedah ini getFileName()mengembalikan satu nama fail (atau direktori) - apa sahaja yang datang selepas pembatas terakhir:
| Kod | Nilai |
|---|---|
|
|
|
|
|
|
Kaedah getRoot()mengembalikan laluan ke direktori akar:
| Kod | Nilai |
|---|---|
|
|
4. Laluan mutlak dan relatif
Terdapat dua jenis laluan: mutlak dan relatif. Laluan mutlak bermula dari direktori akar. Untuk Windows, ini mungkin c:\folder; untuk Linux — /direktori
Laluan relatif bermakna berbanding beberapa direktori. Iaitu, ia seperti penghujung jalan, tetapi tanpa permulaan. Anda boleh menukar laluan relatif kepada laluan mutlak dan begitu juga sebaliknya
boolean isAbsolute()kaedah
Kaedah menyemak sama ada laluan semasa adalah mutlak
| Kod | Nilai |
|---|---|
|
|
|
|
Path toAbsolutePath()kaedah
Menukar laluan kepada mutlak. Jika perlu, tambahkan direktori kerja semasa kepadanya:
| Kod | Nilai |
|---|---|
|
|
|
|
Path normalize()kaedah
Dalam laluan, bukannya nama direktori, anda boleh menulis "..", yang bermaksud kembali satu direktori . Normalisasi menghapuskan perkara-perkara ini. Contoh:
| Kod | Nilai |
|---|---|
|
|
|
|
Path relativize(Path other)kaedah
Kaedah ini relativize()membolehkan anda membina "perbezaan antara laluan": satu laluan berbanding yang lain
| Kod | Nilai |
|---|---|
|
|
|
|
|
IllegalArgumentException: kedua-dua laluan mempunyai "root" yang berbeza (cakera yang berbeza) |
Path resolve(Path other)kaedah
Kaedah ini resolve()bertentangan dengan relativize(): ia membina laluan mutlak baharu daripada laluan mutlak dan relatif.
| Kod | Nilai |
|---|---|
|
|
|
|
toFile()kaedah
Kaedah ini mengembalikan Fileobjek yang tidak digunakan lagi yang menyimpan laluan fail yang sama dengan Pathobjek.
toURI()kaedah
Kaedah menukar laluan kepada URI standard dan mengembalikan objek yang mengandungi laluan ke fail:
| Laluan ke fail | URI ke fail |
|---|---|
|
|
GO TO FULL VERSION