1. Pathkelas

Yen sampeyan pengin nulis program sing nggawe file ing disk, cukup gampang. Java duwe akeh kelas sing mbantu sampeyan nggarap file kasebut dhewe lan isine.

Versi awal Java nggunakake kelas kaya Filelan FileInputStreamkanggo nggarap file. Nanging, Filekelas kasebut saiki ora digunakake lan ora dianjurake kanggo digunakake. Mesthi, sampeyan isih bisa nemoni ing kode, paramèter metode, utawa konstruktor kelas.

Wiwit wiwitan, kita bakal miwiti sinau babagan nggarap file nggunakake Pathkelas. Pathyaiku kelas sing diganti File. Iku luwih aman lan luwih efisien.

Pathkelas

Secara teknis, Pathdudu kelas - iku antarmuka. Iki rampung kanggo ngidini nulis turunan saka Pathkelas kanggo saben sistem operasi (lan sistem file).

Windows duwe siji standar kanggo nulis path file, lan Linux duwe liyane. Mesthi, ana akeh sistem operasi liyane ing donya, lan saben duwe standar dhewe.

Mulane Pathantarmuka digunakake ing endi wae ing cara sing bisa digunakake karo file, sanajan nyatane karya kasebut dumadi liwat kelas turunane: WindowsPath, UnixPath, ...

Nggawe Pathobyek

Kanggo nggawe Pathobyek (sing bakal dadi obyek saka WindowsPathkelas turunan), sampeyan kudu nggunakake statement kaya iki:

Path name = Path.of(path);

Endi namejeneng variabel Path, lan pathminangka path menyang file (utawa direktori) kalebu jeneng file (utawa direktori). Lan ofminangka cara statis saka Pathkelas.

Cara iki of()digunakake kanggo nggawe WindowsPathobyek yen program mlaku ing Windows. Yen program mlaku ing Linux, banjur UnixPathobyek digawe. Sampeyan ora bisa nggawe Pathobyek nggunakake kode kaya .new Path()

Tuladha:

Kode Cathetan
Path file = Path.of("c:\\projects\\note.txt");
Path menyang file
Path directory = Path.of("c:\\projects\\");
Path menyang direktori

Berkas (utawa direktori) ora perlu ana kanggo Pathobyek sing bener. Mungkin sampeyan mung pengin nggawe file ... A Pathobyek kaya souped-up String: ora disambungake menyang file tartamtu ing disk — mung nyimpen path tartamtu ing disk. Mekaten.


2. Metode saka Pathjinis

Antarmuka Pathwis cukup sawetara cara menarik. Sing paling menarik ditampilake ing tabel ing ngisor iki.

Metode Katrangan
Path getParent()
Ngasilake direktori induk
Path getFileName()
Ngasilake jeneng berkas tanpa direktori
Path getRoot()
Ngasilake direktori root saka path
boolean isAbsolute()
Priksa manawa path saiki pancen mutlak
Path toAbsolutePath()
Ngonversi path menyang absolut
Path normalize()
Mbusak wildcards ing jeneng direktori.
Path resolve(Path other)
Mbangun path absolut anyar saka path absolut lan relatif.
Path relativize(Path other)
Entuk path relatif saka rong path absolut.
boolean startsWith(Path other)
Priksa manawa path saiki diwiwiti kanthi path sing diwenehake
boolean endsWith(Path other)
Priksa manawa path saiki rampung karo path sing diwenehake
int getNameCount()
Pisah path menyang bagean nggunakake /minangka delimiter a.
Ngasilake nomer bagean.
Path getName(int index)
Pisah path menyang bagean nggunakake /minangka delimiter a.
Ngasilake bagean kanthi indeks.
Path subpath(int beginIndex, int endIndex)
Pisah path menyang bagean nggunakake /minangka delimiter a.
Ngasilake subpath sing cocog karo interval sing diwenehake.
File toFile()
Ngonversi Pathobyek menyang Fileobyek sing ora digunakake
URI toUri()
Ngonversi Pathobyek menyang URIobyek

Ing ngisor iki ana katrangan ringkes babagan cara sing wis ana.


3. Pisah path menyang bagean

Cara kasebut getParent()ngasilake path sing nuduhake direktori induk kanggo path saiki. Ora preduli manawa path iki minangka direktori utawa file:

Kode Nilai
String str = "c:\\windows\\projects\\note.txt";
Path path = Path.of(str).getParent();
"c:\\windows\\projects\\"
String str = "c:\\windows\\projects\\";
Path path = Path.of(str).getParent();
"c:\\windows\\"
String str = "c:\\";
Path path = Path.of(str).getParent();
null

Cara kasebut getFileName()ngasilake jeneng file (utawa direktori) siji - apa wae sing kedadeyan sawise delimiter pungkasan:

Kode Nilai
String str = "c:\\windows\\projects\\note.txt";
Path path = Path.of(str).getFileName();
"note.txt"
String str = "c:\\windows\\projects\\";
Path path = Path.of(str).getFileName();
"projects"
String str = "c:\\";
Path path = Path.of(str).getFileName();
null

Cara kasebut getRoot()ngasilake path menyang direktori root:

Kode Nilai
String str = "c:\\windows\\projects\\";
Path path = Path.of(str).getRoot();
"c:\\"


4. path Absolute lan relatif

Ana rong jinis path: absolut lan relatif. Path mutlak diwiwiti saka direktori root. Kanggo Windows, iki bisa dadi c:\folder; kanggo Linux - /direktori

A path relatif migunani relatif kanggo sawetara direktori. Yaiku, kaya pungkasane dalan, nanging tanpa wiwitan. Sampeyan bisa ngowahi path relatif menyang path absolut lan kosok balene

boolean isAbsolute()cara

Cara mriksa apa path saiki iku mutlak

Kode Nilai
String str = "c:\\windows\\projects\\note.txt";
boolean abs = Path.of(str).isAbsolute();
true
String str = "src\\com\\codegym\\Main.java";
boolean abs = Path.of(str).isAbsolute();
false

Path toAbsolutePath()cara

Ngonversi path menyang absolut. Yen perlu, tambahake direktori kerja saiki:

Kode Nilai
String str = "c:\\windows\\projects\\note.txt";
Path path = Path.of(str).toAbsolutePath();
"c:\\windows\\projects\\note.txt"
String str = "src\\com\\codegym\\Main.java";
Path path = Path.of(str).toAbsolutePath();
"d:\\work\\src\\com\\codegym\\Main.java"

Path normalize()cara

Ing path, tinimbang jeneng direktori, sampeyan bisa nulis "..", tegese bali siji direktori . Normalisasi ngilangi barang kasebut. Tuladha:

Kode Nilai
String str = "c:\\windows\\..\\projects\\note.txt";
Path path = Path.of(str).normalize();
"c:\\projects\\note.txt"
String str = "src\\com\\codegym\\..\\Main.java";
Path path = Path.of(str).normalize();
"src\\com\\Main.java"

Path relativize(Path other)cara

Cara iki relativize()ngidini sampeyan mbangun "prabédan antarane path": siji path relatif kanggo liyane

Kode Nilai
Path path1 = Path.of("c:\\windows\\projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path2.relativize(path1);
"projects\\note.txt"
Path path1 = Path.of("c:\\windows\\projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path1.relativize(path2);
"..\\.."
Path path1 = Path.of("c:\\aaa\\bbb\\1.txt");
Path path2 = Path.of("d:\\zzz\\y.jpg");
Path result = path1.relativize(path2);
IllegalArgumentException:
loro jalur kasebut duwe "root" sing beda (disk sing beda)

Path resolve(Path other)cara

Cara kasebut resolve()ngelawan relativize(): mbangun path absolut anyar saka path absolut lan relatif.

Kode Nilai
Path path1 = Path.of("projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path1.resolve(path2);
"c:\\windows"
Path path1 = Path.of("projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path2.resolve(path1);
"c:\\windows\\projects\\note.txt"

toFile()cara

Cara kasebut ngasilake Fileobyek sing ora digunakake sing nyimpen path file sing padha karo Pathobyek kasebut.

toURI()cara

Cara kasebut ngowahi path menyang URI standar , lan ngasilake obyek sing ngemot path menyang file:

Path menyang file URI menyang file
c:\windows\projects\note.txt
file:///c:/windows/projects/note.txt