"Oh, Rishi! Hai!"

"Hai, Amigo! Apa khabar?"

"Bagus. Bilaabo baru sahaja memberitahu saya banyak perkara menarik tentang Fail dan cara menanganinya."

"Apabila ia berlaku, saya rasa saya ada sesuatu untuk ditambah mengenai topik ini."

"Betul ke? Kemudian saya semua telinga."

"Baiklah, dengar. Java sentiasa berkembang. Pembangunnya sentiasa mencari cara baharu untuk melakukan perkara yang berbeza dengan lebih cekap. Dalam Java 7, mereka menambah alternatif kepada kelas Fail."

Fail, Laluan - 1

"Alternatif?"

"Ya. Mereka mengambil kelas Fail sebagai asas, menambah beberapa perkara baharu, menamakan semula kaedah, dan kemudian juga membahagikannya kepada dua. Jadi kini terdapat dua kelas baharu: Laluan dan FailLaluan sebenarnya adalah analog baharu Fail kelas, dan Fail ialah kelas utiliti (analogi dengan kelas Tatasusunan dan Koleksi). Semua kaedah statik kelas Fail pergi ke sana. Melakukannya dengan cara ini adalah 'lebih betul' dari segi OOP."

"Nah, kalau dari segi OOP, bolehlah. Jadi apa yang berubah?"

"Pertama, mereka memutuskan untuk tidak mengeluarkan semula kaedah yang mengembalikan  objek String  dan Fail . Dalam kelas Path  , semua kaedah mengembalikan Path .

"Kedua, mereka memindahkan banyak kaedah utiliti statik ke dalam kelas Fail ."

"Ketiga, menjadi lebih mudah untuk bekerja dengan laluan relatif."

"Berikut ialah senarai kaedah:"

Kaedah kelas Path Penerangan
boolean isAbsolute() Mengembalikan benar jika laluan adalah mutlak.
Path getRoot() Mengembalikan punca laluan semasa, iaitu direktori paling atas.
Path getFileName() Mengembalikan nama fail daripada laluan semasa.
Path getParent() Mengembalikan direktori dari laluan semasa.
boolean startsWith(Path other) Menyemak sama ada laluan semasa bermula dengan laluan yang dilalui.
boolean endsWith(Path other) Menyemak sama ada laluan semasa berakhir dengan laluan yang diluluskan.
Path normalize() Menormalkan laluan semasa. Sebagai contoh, menukar «c:/dir/dir2/../a.txt» kepada «c:/dir/a.txt»
Path relativize(Path other) Mengira laluan relatif dua laluan, iaitu «perbezaan antara laluan»
Path resolve(String other) Menyelesaikan laluan mutlak menggunakan laluan semasa dan relatif.
URI toUri() Mengembalikan URI jika laluan/fail semasa.
Path toAbsolutePath() Menukar laluan kepada laluan mutlak jika ia adalah relatif.
File toFile() Mengembalikan objek Fail yang sepadan dengan objek Laluan semasa.

"Dan laluan semasa—apa itu?"

"Ini ialah laluan yang dihantar kepada pembina objek Path yang kaedahnya dipanggil."

"OK. Jadi apakah kaedah yang ada pada kelas Fail ?"

"Adakah anda tergesa-gesa untuk pergi ke suatu tempat? Saya akan memberitahu anda sekarang. Berikut ialah kaedah yang paling penting:"

Kaedah kelas Fail Penerangan
Path createFile(…) Mencipta fail pada cakera.
Path createDirectory(…) Mencipta direktori.
Path createDirectories(…) Mencipta direktori dan semua subdirektorinya.
Path createTempFile(…) Mencipta fail sementara.
Path createTempDirectory(…) Mencipta direktori sementara.
void delete(Path path) Memadamkan fail.
Path copy(Path source, Path target,…) Menyalin fail.
Path move(Path source, Path target,…) Memindahkan fail.
boolean isSameFile(Path, Path) Membandingkan dua fail.
boolean isDirectory(Path) Adakah Path sebuah direktori?
boolean isRegularFile(Path) Adakah Path adalah fail?
long size(Path) Mengembalikan saiz fail.
boolean exists(Path) Adakah objek dengan nama yang sama wujud?
boolean notExists(Path) Adakah objek dengan nama yang sama tidak wujud?
long copy(InputStream, OutputStream) Menyalin bait daripada InputStream ke OutputStream.
long copy(Path, OutputStream) Menyalin semua bait daripada Laluan ke OutputStream.
long copy(InputStream, Path) Menyalin semua bait daripada InputStream ke Path.
byte[] read(InputStream, int initialSize) Membaca pelbagai bait daripada InputStream.
byte[] readAllBytes(Path path) Membaca semua bait daripada InputStream.
List<String> readAllLines(Path path,..) Membaca fail teks dan mengembalikan senarai rentetan.
Path write(Path path, byte[] bytes,…) Menulis tatasusunan bait pada fail.

"Sungguh menarik! Banyak fungsi yang menarik, dan semuanya di tempat yang sama."

"Nah, lihat. Katakan anda ingin memuat turun fail dari Internet, dan kemudian menghantarnya kepada seseorang. Untuk melakukan ini, sangat mudah untuk mencipta fail sementara pada cakera dan menyimpan data yang dibaca kepadanya."

"Adakah sukar untuk memuat turun fail dari Internet?"

"Ia sangat mudah. ​​Lihat contoh ini:"

Kod
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 itu sahaja?"

"Ya, apa yang anda jangkakan untuk melihat? Hanya ada 4 baris."

" Baris 1.  Mencipta objek URL, yang URL fail imej dihantar.

" Baris 2.  Strim untuk membaca fail (InputStream) dibuka pada objek url.

" Baris 3. Kaedah  ini createTempFiledigunakan untuk mencipta fail sementara.

" Baris 4.  Kaedah Files.copy menyalin data dari  inputStream ke tempFile. Itu sahaja."

"Bijak!"

"Bagus. Saya gembira anda menyukainya. Saya rasa anda boleh memikirkan kaedah yang lain sendiri. Dan saya akan meminta Diego memberi anda beberapa tugas mengenainya."

"Omong-omong, inilah pautan yang baik pada bahan ini"