"Hai, Amigo. Lama tidak bertemu."

"Hai, Bilaabo. Apa yang akan kamu bicarakan?"

"Hari ini saya akan memberi tahu Anda tentang bekerja dengan file.  Java memiliki kelas khusus (File) yang dapat Anda gunakan untuk mengelola file di hard drive. Untuk mengelola konten file, ada kelas lain: FileInputStream, FileOutputStream, dll. "

Berkas, Berkas, Jalur - 1

"Menarik. Tapi saat kamu mengatakan 'kelola file', apa maksudmu?"

"Itulah yang akan saya jelaskan sekarang. File dapat dibuat, dihapus, diganti namanya, dan banyak lagi. Anda dapat meneruskan objek File ke hampir semua kelas yang bekerja dengan (membaca, menulis, mengubah) konten file . Misalnya:"

Anda dapat meneruskan nama file langsung ke FileInputStream
FileInputStream input = new FileInputStream("c:/path/a.txt");
Atau Anda dapat membuat objek File secara terpisah, lalu meneruskannya ke FileInputStrea
File file = new File("c:/path/a.txt");
FileInputStream input = new FileInputStream(file);

"Tapi opsi kedua lebih panjang. Saya masih tidak mengerti mengapa kita membutuhkan objek file ini."

"Untuk contoh khusus ini, Anda benar. "Ini bukan contoh bagaimana Anda harus melakukannya, melainkan bagaimana Anda bisa melakukannya.
Tetapi bayangkan Anda perlu menampilkan daftar semua file yang terletak di direktori tertentu. Inilah cara ini dapat dilakukan dengan menggunakan objek File:"

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

"Apakah listFiles() metode yang mengembalikan daftar file dalam folder yang ditunjukkan oleh «c:/path/»?"

"Ya. Tapi programmer biasanya mengatakan 'direktori'. Istilah 'folder' mulai digunakan baru-baru ini, tetapi pada prinsipnya, kedua istilah itu benar dan Anda dapat mengatakan mana yang Anda suka."

"Oke. Dan apa fungsi getName ()? Mengembalikan nama file? Apa sebenarnya yang termasuk dalam nama? Nama lengkap termasuk path, atau hanya nama file itu sendiri?"

"Hanya nama file itu sendiri. Untuk path lengkapnya, ada file.getAbsolutePath()."

"Jadi, metode apa lagi yang dimiliki kelas File?"

"Lihatlah ini:"

metode Keterangan
boolean isDirectory() Apakah objek File adalah direktori?
boolean isFile() Apakah objeknya adalah file?
long length() Mengembalikan ukuran/panjang file dalam byte.
boolean createNewFile() Membuat file baru yang kosong jika file dengan nama ini belum ada.
boolean mkdir() Membuat direktori. Nama «mkdir» berasal dari «make directory».
boolean mkdirs() Membuat direktori dan semua subdirektorinya.
boolean delete() Menghapus file yang terkait dengan objek. Jika objeknya adalah direktori, maka direktori tersebut dihapus hanya jika tidak ada file di dalamnya.
void deleteOnExit() Menambahkan file ke daftar file khusus yang akan dihapus secara otomatis saat program keluar.
File createTempFile(
String prefix,
String suffix,
File directory)
Membuat file sementara dengan nama unik yang dibuat secara acak, seperti «dasd4d53sd».
Parameter tambahan adalah awalan nama dan akhiran. Jika direktori tidak ditentukan, maka file tersebut dibuat di direktori OS khusus untuk file sementara.
boolean exists() Mengembalikan nilai true jika ada file dengan nama yang sama di hard drive.
String getAbsolutePath() Mengembalikan jalur lengkap file dengan semua subdirektorinya.
String getCanonicalPath() Mengembalikan jalur file kanonis.
Misalnya, ubah jalur «c:/dir/dir2/../a.txt» menjadi «c:/dir/a.txt»
String[] list() Mengembalikan array nama file yang terdapat dalam direktori yang diwakili oleh objek saat ini.
File[] listFiles() Mengembalikan array file yang terdapat dalam direktori yang diwakili oleh objek File saat ini.
long getTotalSpace() Mengembalikan jumlah ruang total (jumlah byte) pada disk tempat file berada.
long getFreeSpace() Mengembalikan jumlah ruang kosong (jumlah byte) pada disk tempat file berada.
boolean renameTo(File) Mengganti nama file, yaitu isi file benar-benar mendapatkan nama baru. Dengan kata lain, Anda dapat mengganti nama file «c:/dir/a.txt» menjadi «d:/out/text/b.doc».
String getName() Mengembalikan hanya nama file tanpa jalur.
String getParent() Mengembalikan hanya jalur (direktori) ke file saat ini, tanpa nama itu sendiri.
Path toPath() Mengembalikan objek Path yang sesuai dengan objek File saat ini.

"Whoa! Bukan daftar yang sangat kecil, ya? Dan sepertinya Anda dapat melakukan banyak hal dengannya: membuat dan menghapus file, mengganti namanya,..."

"Jadi untuk mendapatkan direktori file saat ini, saya perlu memanggil getParent()?"

"Yep, tapi ini mengembalikan sebuah String ― jalur file ― bukan objek File. Sebenarnya, kelas File menggandakan hampir semua metodenya: satu versi mengembalikan sebuah String, yang lain - sebuah objek File. Lihat ini:"

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

Jika Anda memiliki String dengan jalur file dan Anda memerlukan objek File , gunakan konstruktor. Jika situasinya terbalik (Anda memiliki objek File tetapi Anda memerlukan String), gunakan getAbsolutePath (). Misalnya:"

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

"Mengerti."

"Bagus. Lalu ini tugas kecil untukmu: tunjukkan nama semua file yang terletak di direktori yang sama dengan file saat ini."

"Tidak ada yang lebih mudah. ​​Ini, lihat:"

Kode
//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. Benar."

"Tapi agak membingungkan bahwa kelas yang sama ― File ― digunakan untuk file dan direktori. Sepertinya tidak logis bagi saya."

"Itu berhasil karena alasan historis. Sebuah direktori dulunya adalah file 'kosong' khusus pada disk. Tentu saja, sekarang banyak yang berubah, tetapi tidak semuanya. Hanya itu yang saya miliki hari ini."

"Terima kasih untuk pelajaran yang menarik, Bilaabo."