"Hi, Amigo. Long time, no see."

"Hi, Bilaabo. Ano ang pag-uusapan niyo?"

"Ngayon sasabihin ko sa iyo ang tungkol sa pagtatrabaho sa mga file.  Ang Java ay may espesyal na klase (File) na magagamit mo upang pamahalaan ang mga file sa isang hard drive. Para sa pamamahala ng mga nilalaman ng file, mayroong iba pang mga klase: FileInputStream, FileOutputStream, atbp. "

File, Files, Path - 1

"Interesting. Pero kapag sinabi mong 'manage files', anong ibig mong sabihin?"

"Iyon lang ang ipapaliwanag ko ngayon. Ang mga file ay maaaring gawin, tanggalin, palitan ang pangalan, at marami pang iba. Maaari mong ipasa ang isang File object sa halos bawat klase na gumagana sa (nagbabasa, nagsusulat, nagbabago) ng mga nilalaman ng isang file . Halimbawa:"

Maaari mong direktang ipasa ang pangalan ng file sa FileInputStream
FileInputStream input = new FileInputStream("c:/path/a.txt");
O maaari kang lumikha ng isang File object nang hiwalay, at pagkatapos ay ipasa ito sa FileInputStrea
File file = new File("c:/path/a.txt");
FileInputStream input = new FileInputStream(file);

"Ngunit mas mahaba ang pangalawang opsyon. Hindi ko pa rin maintindihan kung bakit kailangan natin ang mga file object na ito."

"Para sa partikular na halimbawang ito, tama ka. "Hindi ito isang halimbawa kung paano mo ito dapat gawin, ngunit kung paano mo ito magagawa.
Ngunit isipin na kailangan mong magpakita ng isang listahan ng lahat ng mga file na matatagpuan sa isang partikular na direktoryo. Narito kung paano ito magagawa gamit ang mga bagay na File:"

Code
File folder = new File("c:/path/");
for (File file : folder.listFiles())
{
 System.out.println(file.getName());
}

"Ang listFiles() ba ay isang paraan na nagbabalik ng isang listahan ng mga file sa folder na ipinahiwatig ng «c:/path/»?"

"Oo. Ngunit kadalasang sinasabi ng mga programmer ang 'direktoryo'. Ang terminong 'folder' ay ginamit kamakailan, ngunit sa prinsipyo, ang parehong mga termino ay tama at maaari mong sabihin kung alin ang gusto mo."

"OK. At ano ang ginagawa ng getName ()? Ibalik ang pangalan ng file? Ano nga ba ang kasama sa pangalan? Ang buong pangalan kasama ang path, o ang pangalan lang ng file mismo?"

"Ang pangalan lang ng file mismo. Para sa buong path, mayroong file.getAbsolutePath()."

"Kaya anong iba pang mga pamamaraan ang mayroon ang klase ng File?"

"Tignan mo ito:"

Pamamaraan Paglalarawan
boolean isDirectory() Ang object ba ng File ay isang direktoryo?
boolean isFile() Ang bagay ba ay isang file?
long length() Ibinabalik ang laki/haba ng file sa bytes.
boolean createNewFile() Lumilikha ng bago at walang laman na file kung wala pang file na may ganitong pangalan.
boolean mkdir() Lumilikha ng isang direktoryo. Ang pangalan na «mkdir» ay nagmula sa «gumawa ng direktoryo».
boolean mkdirs() Lumilikha ng isang direktoryo at lahat ng mga subdirectory nito.
boolean delete() Tinatanggal ang file na nauugnay sa object. Kung ang object ay isang direktoryo, pagkatapos ay ang direktoryo ay tatanggalin lamang kung walang mga file sa loob nito.
void deleteOnExit() Idinaragdag ang file sa isang espesyal na listahan ng mga file na awtomatikong tatanggalin kapag lumabas ang program.
File createTempFile(
String prefix,
String suffix,
File directory)
Lumilikha ng pansamantalang file na may random na nabuong natatanging pangalan, tulad ng «dasd4d53sd».
Ang mga karagdagang parameter ay isang prefix ng pangalan at suffix. Kung ang isang direktoryo ay hindi tinukoy, ang file ay nilikha sa isang espesyal na direktoryo ng OS para sa mga pansamantalang file.
boolean exists() Nagbabalik ng true kung mayroong isang file na may parehong pangalan sa hard drive.
String getAbsolutePath() Ibinabalik ang buong landas ng file kasama ang lahat ng mga subdirectory nito.
String getCanonicalPath() Ibinabalik ang canonical file path.
Halimbawa, kino-convert ang path na «c:/dir/dir2/../a.txt» sa «c:/dir/a.txt»
String[] list() Nagbabalik ng hanay ng mga pangalan ng mga file na nasa direktoryo na kinakatawan ng kasalukuyang bagay.
File[] listFiles() Nagbabalik ng hanay ng mga file na nasa direktoryo na kinakatawan ng kasalukuyang bagay na File.
long getTotalSpace() Ibinabalik ang halaga ng kabuuang espasyo (bilang ng mga byte) sa disk kung saan matatagpuan ang file.
long getFreeSpace() Ibinabalik ang dami ng libreng espasyo (bilang ng mga byte) sa disk kung saan matatagpuan ang file.
boolean renameTo(File) Pinapalitan ang pangalan ng file, ibig sabihin, ang mga nilalaman ng file ay talagang nakakakuha ng bagong pangalan. Sa madaling salita, maaari mong palitan ang pangalan ng file na «c:/dir/a.txt» sa «d:/out/text/b.doc».
String getName() Ibinabalik lamang ang pangalan ng file na walang path.
String getParent() Ibinabalik lamang ang landas (direktoryo) sa kasalukuyang file, nang walang pangalan mismo.
Path toPath() Nagbabalik ng Path object na tumutugma sa kasalukuyang File object.

"Whoa! Hindi isang napakaliit na listahan, ha? At mukhang marami kang magagawa dito: gumawa at magtanggal ng mga file, palitan ang pangalan ng mga ito,..."

"Kaya para makuha ang direktoryo ng kasalukuyang file, kailangan kong tawagan ang getParent()?"

"Oo, ngunit nagbabalik ito ng String ― ang path ng file ― hindi isang File object. Sa totoo lang, ang klase ng File ay duplicate ang halos lahat ng mga pamamaraan nito: ang isang bersyon ay nagbabalik ng String, ang isa naman ― isang File object. Tingnan ito:"

File file = new File("c:/path/a.txt");
String directory = file.getParent();
File file = new File("c:/path/a.txt");
File directory = file.getParentFile();

Kung mayroon kang String na may path ng file at kailangan mo ng File object, pagkatapos ay gamitin ang constructor. Kung ang sitwasyon ay baligtad (mayroon kang File object ngunit kailangan mo ng String), pagkatapos ay gamitin ang getAbsolutePath (). Halimbawa:"

String path = "c:/a.txt";
File file = new File(path);
File file = new File("c:/a.txt");
String path = file.getAbsolutePath();

"Nakuha ko."

"Mahusay. Pagkatapos narito ang isang maliit na gawain para sa iyo: ipakita ang mga pangalan ng lahat ng mga file na matatagpuan sa parehong direktoryo ng kasalukuyang file."

"Walang mas madali. Narito, tingnan:"

Code
//Some file
File originalFile = new File("c:/path/dir2/a.txt");

//An object representing the directory
File folder = originalFile.getParentFile();

//Print the file list on screen
for (File file : folder.listFiles())
{
 System.out.println(file.getName());
}

"Hmm. Tama."

"Ngunit medyo nakakalito na ang parehong klase ― File ― ay ginagamit para sa parehong file at sa direktoryo. Iyon ay tila hindi masyadong lohikal sa akin."

"It worked out that way for historical reasons. Ang isang directory dati ay isang espesyal na 'empty' file sa disk. Siyempre, ngayon marami na ang nagbago, pero hindi lahat. Iyon lang ang mayroon ako ngayon."

"Salamat sa kawili-wiling aral, Bilaabo."