1. Path
kelas
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 File
dan FileInputStream
untuk berfungsi dengan fail. Walau bagaimanapun, File
kelas 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
. Path
ialah kelas yang menggantikan File
. Ia lebih selamat dan lebih cekap.
Path
kelas
Secara teknikal, Path
ia bukan kelas — ia adalah antara muka. Ini dilakukan untuk membenarkan penulisan keturunan kelas Path
untuk 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 Path
antara muka digunakan di mana-mana dalam kaedah yang berfungsi dengan fail, walaupun pada hakikatnya kerja itu berlaku melalui kelas keturunannya: WindowsPath
, UnixPath
, ...
Mencipta Path
objek
Untuk mencipta Path
objek (yang sebenarnya akan menjadi objek kelas WindowsPath
keturunan), anda perlu menggunakan pernyataan seperti ini:
Path name = Path.of(path);
Di manakah name
nama pembolehubah Path
, dan path
merupakan laluan ke fail (atau direktori) termasuk nama fail (atau direktori). Dan of
adalah kaedah statik kelas Path
.
Kaedah ini of()
digunakan untuk mencipta WindowsPath
objek jika program dijalankan pada Windows. Jika program berjalan di Linux, maka UnixPath
objek dicipta. Anda tidak boleh mencipta Path
objek menggunakan kod seperti .new Path()
Contoh:
Kod | Catatan |
---|---|
|
Laluan ke fail |
|
Laluan ke direktori |
Fail (atau direktori) tidak perlu wujud untuk Path
objek yang sah wujud. Mungkin anda hanya ingin mencipta fail... Path
Objek adalah seperti suped-up String
: ia tidak terikat pada fail tertentu pada cakera — ia hanya menyimpan laluan tertentu pada cakera. Itu sahaja.
2. Kaedah Path
jenis
Antara Path
muka 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 Path objek kepada File objek yang tidak digunakan lagi |
|
Menukar Path objek kepada URI objek |
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 File
objek yang tidak digunakan lagi yang menyimpan laluan fail yang sama dengan Path
objek.
toURI()
kaedah
Kaedah menukar laluan kepada URI standard dan mengembalikan objek yang mengandungi laluan ke fail:
Laluan ke fail | URI ke fail |
---|---|
|
|