1. Path
klase
Kung gusto mong magsulat ng isang programa na gumagawa ng isang bagay sa mga file sa disk, iyon ay medyo madali. Ang Java ay may maraming mga klase na makakatulong sa iyong magtrabaho kasama ang mga file mismo at ang kanilang mga nilalaman.
Ang mga unang bersyon ng Java ay gumamit ng mga klase tulad ng File
at FileInputStream
upang gumana sa mga file. Gayunpaman, ang File
klase ay hindi na ginagamit at hindi inirerekomenda para sa paggamit. Siyempre, maaari mo pa rin itong makatagpo sa code, mga parameter ng pamamaraan, o mga tagabuo ng klase.
Sa simula pa lang, magsisimula na tayong matutunan kung paano gumawa ng mga file gamit ang Path
klase. Path
ay ang klase na pinalitan File
. Ito ay mas ligtas at mas mahusay.
Path
klase
Sa teknikal, Path
ay hindi isang klase — ito ay isang interface. Ginagawa ito upang payagan ang pagsulat ng isang inapo ng Path
klase para sa bawat operating system (at file system).
Ang Windows ay may isang pamantayan para sa pagsusulat ng mga path ng file, at ang Linux ay may isa pa. Siyempre, maraming iba pang mga operating system sa mundo, at bawat isa ay may sariling pamantayan.
Iyon ang dahilan kung bakit Path
ginagamit ang interface sa lahat ng dako sa mga pamamaraan na gumagana sa mga file, bagaman sa katotohanan ang gawain ay nangyayari sa pamamagitan ng mga descendant na klase nito: WindowsPath
, UnixPath
, ...
Paglikha ng isang Path
bagay
Upang lumikha ng isang Path
bagay (na talagang magiging isang bagay ng WindowsPath
descendant class), kailangan mong gumamit ng isang pahayag na tulad nito:
Path name = Path.of(path);
Nasaan name
ang pangalan ng isang Path
variable, at path
ang path patungo sa file (o direktoryo) kasama ang pangalan ng file (o direktoryo). At of
ito ay isang static na pamamaraan ng Path
klase.
Ang of()
pamamaraan ay ginagamit upang lumikha WindowsPath
ng mga bagay kung ang programa ay tumatakbo sa Windows. Kung ang programa ay tumatakbo sa Linux, ang UnixPath
mga bagay ay nilikha. Hindi ka maaaring lumikha ng isang Path
bagay gamit ang code tulad ng .new Path()
Mga halimbawa:
Code | Tandaan |
---|---|
|
Path sa file |
|
Path sa direktoryo |
Ang file (o direktoryo) ay hindi kailangang umiral para Path
umiral ang isang wastong bagay. Baka gusto mo lang gumawa ng file... Ang isang Path
object ay parang souped-up String
: hindi ito nakatali sa isang partikular na file sa disk — nag-iimbak lang ito ng isang partikular na path sa disk. Ayan yun.
2. Mga pamamaraan ng Path
uri
Ang Path
interface ay may ilang mga kagiliw-giliw na pamamaraan. Ang mga pinaka-kawili-wili ay ipinakita sa talahanayan sa ibaba.
Pamamaraan | Paglalarawan |
---|---|
|
Ibinabalik ang parent directory |
|
Ibinabalik ang filename nang walang direktoryo |
|
Ibinabalik ang root directory mula sa isang path |
|
Sinusuri kung ang kasalukuyang landas ay ganap |
|
Kino-convert ang landas sa ganap |
|
Tinatanggal ang mga wildcard sa isang pangalan ng direktoryo. |
|
Bumubuo ng bagong absolute path mula sa absolute at relative path. |
|
Nakakakuha ng kamag-anak na landas mula sa dalawang ganap na landas. |
|
Sinusuri kung ang kasalukuyang landas ay nagsisimula sa isang ibinigay na landas |
|
Sinusuri kung ang kasalukuyang landas ay nagtatapos sa isang ibinigay na landas |
|
Hinahati ang landas sa mga bahagi gamit / bilang isang delimiter. Ibinabalik ang bilang ng mga bahagi. |
|
Hinahati ang landas sa mga bahagi gamit / bilang isang delimiter. Ibinabalik ang isang bahagi ayon sa index nito. |
|
Hinahati ang landas sa mga bahagi gamit / bilang isang delimiter. Ibinabalik ang subpath na tumutugma sa ibinigay na agwat. |
|
Kino-convert ang isang Path bagay sa isang hindi na ginagamit File na bagay |
|
Kino-convert ang isang Path bagay sa isang URI bagay |
Nasa ibaba ang isang maikling paglalarawan ng mga umiiral na pamamaraan.
3. Paghahati ng landas sa mga bahagi
Ibinabalik ng getParent()
pamamaraan ang landas na tumuturo sa direktoryo ng magulang para sa kasalukuyang landas. Hindi alintana kung ang landas na ito ay isang direktoryo o isang file:
Code | Halaga |
---|---|
|
|
|
|
|
|
Ang getFileName()
pamamaraan ay nagbabalik ng isang solong file (o direktoryo) na pangalan - anuman ang dumating pagkatapos ng huling delimiter:
Code | Halaga |
---|---|
|
|
|
|
|
|
Ibinabalik ng getRoot()
pamamaraan ang landas sa root directory:
Code | Halaga |
---|---|
|
|
4. Absolute at relative na mga landas
Mayroong dalawang uri ng mga landas: ganap at kamag-anak. Ang isang ganap na landas ay nagsisimula sa root directory. Para sa Windows, maaaring ito ang c:\
folder; para sa Linux — ang /
direktoryo
Ang isang kamag-anak na landas ay makabuluhan na nauugnay sa ilang direktoryo. Iyon ay, ito ay tulad ng dulo ng kalsada, ngunit walang simula. Maaari mong gawing ganap na landas ang isang kamag-anak na landas at vice versa
boolean isAbsolute()
paraan
Sinusuri ng pamamaraan kung ang kasalukuyang landas ay ganap
Code | Halaga |
---|---|
|
|
|
|
Path toAbsolutePath()
paraan
Kino-convert ang landas sa ganap. Kung kinakailangan, idagdag ang kasalukuyang gumaganang direktoryo dito:
Code | Halaga |
---|---|
|
|
|
|
Path normalize()
paraan
Sa path, sa halip na isang pangalan ng direktoryo, maaari mong isulat ang "..", na nangangahulugang bumalik sa isang direktoryo . Tinatanggal ng normalisasyon ang mga bagay na ito. Mga halimbawa:
Code | Halaga |
---|---|
|
|
|
|
Path relativize(Path other)
paraan
relativize()
Hinahayaan ka ng pamamaraan na bumuo ng "mga pagkakaiba sa pagitan ng mga landas": isang landas na nauugnay sa isa pa
Code | Halaga |
---|---|
|
|
|
|
|
IllegalArgumentException: ang dalawang landas ay may magkaibang "ugat" (magkaibang mga disk) |
Path resolve(Path other)
paraan
Ang resolve()
pamamaraan ay gumagawa ng kabaligtaran ng relativize()
: ito ay bumubuo ng isang bagong ganap na landas mula sa isang ganap at isang kamag-anak na landas.
Code | Halaga |
---|---|
|
|
|
|
toFile()
paraan
Ang pamamaraan ay nagbabalik ng isang hindi na ginagamit File
na bagay na nag-iimbak ng parehong landas ng file bilang Path
bagay.
toURI()
paraan
Ang pamamaraan ay nagko-convert ng landas sa isang karaniwang URI , at nagbabalik ng isang bagay na naglalaman ng landas sa file:
Path sa file | URI sa file |
---|---|
|
|
GO TO FULL VERSION