"Oh, Resi! Hai!"

"Hai, Amigo! Bagaimana kabarmu?"

"Bagus. Bilaabo baru saja memberi tahu saya banyak hal menarik tentang File, dan cara bekerja dengannya."

"Seperti yang terjadi, saya pikir saya memiliki sesuatu untuk ditambahkan pada topik ini."

"Benarkah? Kalau begitu aku mendengarkan."

"Oke, dengarkan. Java terus berkembang. Pengembangnya terus mencari cara baru untuk melakukan berbagai hal dengan lebih efisien. Di Java 7, mereka menambahkan alternatif ke kelas File."

File, Jalur - 1

"Alternatif?"

"Ya. Mereka mengambil kelas File sebagai dasar, menambahkan beberapa hal baru, mengganti nama metode, dan kemudian membaginya menjadi dua. Jadi sekarang ada dua kelas baru: Path dan FilesPath sebenarnya adalah analog baru dari File kelas, dan File adalah kelas utilitas (analog dengan kelas Array dan Koleksi). Semua metode statis dari kelas File pergi ke sana. Melakukannya dengan cara ini 'lebih benar' dalam hal OOP."

"Nah, kalau dari segi OOP, oke. Lalu apa yang berubah?"

"Pertama, mereka memutuskan untuk tidak mereproduksi metode yang mengembalikan  objek String  dan File . Di kelas Path  , semua metode mengembalikan Path .

"Kedua, mereka memindahkan banyak metode utilitas statis ke dalam kelas Files ."

"Ketiga, menjadi lebih nyaman bekerja dengan jalur relatif."

"Ini daftar metodenya:"

Metode kelas Path Keterangan
boolean isAbsolute() Mengembalikan nilai true jika jalurnya absolut.
Path getRoot() Mengembalikan akar jalur saat ini, yaitu direktori paling atas.
Path getFileName() Mengembalikan nama file dari jalur saat ini.
Path getParent() Mengembalikan direktori dari jalur saat ini.
boolean startsWith(Path other) Memeriksa apakah jalur saat ini dimulai dengan jalur yang dilewati.
boolean endsWith(Path other) Memeriksa apakah jalur saat ini berakhir dengan jalur yang dilewati.
Path normalize() Menormalkan jalur saat ini. Misalnya, ubah «c:/dir/dir2/../a.txt» menjadi «c:/dir/a.txt»
Path relativize(Path other) Menghitung jalur relatif dari dua jalur, yaitu «perbedaan antara jalur»
Path resolve(String other) Menyelesaikan jalur absolut menggunakan jalur saat ini dan relatif.
URI toUri() Mengembalikan URI jika jalur/file saat ini.
Path toAbsolutePath() Mengonversi jalur menjadi jalur absolut jika relatif.
File toFile() Mengembalikan objek File yang sesuai dengan objek Path saat ini.

"Dan jalur saat ini—apa itu?"

"Ini adalah jalur yang diteruskan ke konstruktor objek Path yang metodenya dipanggil."

"Oke. Jadi metode apa yang dimiliki kelas Files ?"

"Apakah kamu sedang terburu-buru untuk pergi ke suatu tempat? Aku akan memberitahumu sekarang. Berikut adalah metode yang paling penting:"

Metode kelas File Keterangan
Path createFile(…) Membuat file di disk.
Path createDirectory(…) Membuat direktori.
Path createDirectories(…) Membuat direktori dan semua subdirektorinya.
Path createTempFile(…) Membuat file sementara.
Path createTempDirectory(…) Membuat direktori sementara.
void delete(Path path) Menghapus file.
Path copy(Path source, Path target,…) Menyalin file.
Path move(Path source, Path target,…) Memindahkan file.
boolean isSameFile(Path, Path) Membandingkan dua file.
boolean isDirectory(Path) Apakah Path sebuah direktori?
boolean isRegularFile(Path) Apakah Path sebuah file?
long size(Path) Mengembalikan ukuran file.
boolean exists(Path) Apakah objek dengan nama yang sama ada?
boolean notExists(Path) Apakah objek dengan nama yang sama tidak ada?
long copy(InputStream, OutputStream) Menyalin byte dari InputStream ke OutputStream.
long copy(Path, OutputStream) Menyalin semua byte dari Path ke OutputStream.
long copy(InputStream, Path) Menyalin semua byte dari InputStream ke Path.
byte[] read(InputStream, int initialSize) Membaca array byte dari InputStream.
byte[] readAllBytes(Path path) Membaca semua byte dari InputStream.
List<String> readAllLines(Path path,..) Membaca file teks dan mengembalikan daftar string.
Path write(Path path, byte[] bytes,…) Menulis array byte ke file.

"Menarik sekali! Begitu banyak fungsi keren, dan semuanya ada di tempat yang sama."

"Begini. Misalkan Anda ingin mengunduh file dari Internet, dan kemudian mengirimkannya ke seseorang. Untuk melakukan ini, akan sangat mudah untuk membuat file sementara di disk dan menyimpan data yang telah dibaca ke dalamnya."

"Apakah sulit mengunduh file dari Internet?"

"Ini sangat sederhana. Lihat contoh ini:"

Kode
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();

Path tempFile = Files.createTempFile("temp-",".tmp");
Files.copy(inputStream, tempFile);

"Dan hanya itu?"

"Ya, apa yang ingin kamu lihat? Hanya ada 4 baris."

" Baris 1.  Membuat objek URL, yang diteruskan ke URL file gambar.

" Baris 2.  Aliran untuk membaca file (InputStream) dibuka pada objek url.

" Baris 3. Metode  ini createTempFiledigunakan untuk membuat file sementara.

" Baris 4.  Metode Files.copy menyalin data dari  inputStream ke tempFile. Itu saja."

"Berbakat!"

"Bagus. Aku senang kamu menyukainya. Kurasa kamu bisa memikirkan sendiri metode lainnya. Dan aku akan meminta Diego untuk memberimu beberapa tugas tentangnya."

"Ngomong-ngomong, ini tautan bagus untuk materi ini"