Java Academy · Pelajaran

Utiliti Files: Baca, Tulis, Salin, Alih

Gunakan Files.readString, writeString, copy, move dan delete untuk operasi fail biasa.

Pelajaran 2 daripada 413 langkah

Utiliti Files: Baca, Tulis, Salin, Alih ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Kelas Fail

Kelas java.nio.file.Files menyediakan kaedah utiliti statik untuk membaca, menulis, menyalin, memindahkan dan menyoal fail. Ia menggantikan kod asas FileInputStream/FileOutputStream yang panjang.

import java.nio.file.*;
import java.io.IOException;

Path file = Path.of("example.txt");
// All Files methods throw IOException — handle or propagate

Membaca Fail

Kaedah moden untuk membaca keseluruhan kandungan fail:

Path path = Path.of("notes.txt");

// Read as a single String (Java 11+)
String content = Files.readString(path);
System.out.println(content);

// Read as List of lines
List<String> lines = Files.readAllLines(path);
lines.forEach(System.out::println);

// Read as byte array
byte[] bytes = Files.readAllBytes(path);

Menulis Fail

Tulis String atau koleksi baris ke dalam fail dengan satu panggilan:

Path out = Path.of("output.txt");

// Write a String (overwrites by default)
Files.writeString(out, "Hello, NIO.2!");

// Write with StandardOpenOption.APPEND
Files.writeString(out, "\nAppended line", StandardOpenOption.APPEND);

// Write lines
List<String> lines = List.of("line1", "line2", "line3");
Files.write(out, lines);

Menyemak Sifat Fail

Semak metadata fail tanpa membuka fail tersebut:

Path path = Path.of("data.txt");

System.out.println(Files.exists(path));       // true/false
System.out.println(Files.isRegularFile(path)); // true if not dir
System.out.println(Files.isDirectory(path));   // true if dir
System.out.println(Files.isReadable(path));    // readable?
System.out.println(Files.size(path));          // bytes
System.out.println(Files.getLastModifiedTime(path));

Menyalin Fail

Files.copy(source, target) menyalin fail. Gunakan StandardCopyOption untuk mengawal tingkah laku:

Path src = Path.of("original.txt");
Path dst = Path.of("backup.txt");

// Throws if destination exists (default)
Files.copy(src, dst);

// Overwrite if exists:
Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);

// Copy preserving file timestamps:
Files.copy(src, dst, StandardCopyOption.COPY_ATTRIBUTES);

Memindahkan dan Menamakan Semula Fail

Files.move() memindahkan atau menamakan semula fail. Pemindahan atomik boleh dilakukan dengan ATOMIC_MOVE:

Path from = Path.of("temp.txt");
Path to   = Path.of("archive/report_2024.txt");

Files.move(from, to, StandardCopyOption.REPLACE_EXISTING);

// Rename in same directory:
Path renamed = from.resolveSibling("new_name.txt");
Files.move(from, renamed, StandardCopyOption.REPLACE_EXISTING);

Memadam Fail

Dua kaedah pemadaman — satu melemparkan pengecualian jika fail tidak ditemui, satu lagi tidak:

Path file = Path.of("temp.txt");

// Throws NoSuchFileException if file doesn't exist:
Files.delete(file);

// Returns false if file didn't exist (no exception):
boolean deleted = Files.deleteIfExists(file);
System.out.println("Deleted: " + deleted);

Mencipta Direktori

Cipta direktori, termasuk semua direktori perantara:

Path dir = Path.of("output/reports/2024");

// Creates all missing intermediate directories:
Files.createDirectories(dir);

// Creates a single directory (fails if parent missing):
Files.createDirectory(Path.of("output/reports/2025"));

Fail dan Direktori Sementara

Cipta fail sementara dengan selamat — JVM boleh membersihkannya:

// Temp file in default temp directory
Path tmp = Files.createTempFile("prefix_", ".txt");
Files.writeString(tmp, "temp data");
System.out.println(tmp); // something like /tmp/prefix_12345.txt

// Temp directory
Path tmpDir = Files.createTempDirectory("work_");
System.out.println(tmpDir);

Menstrim Baris dengan Files.lines

Files.lines() mengembalikan Stream<String> malas — lebih baik daripada readAllLines untuk fail besar kerana ia tidak memuatkan semuanya ke dalam memori:

try (var stream = Files.lines(Path.of("large.log"))) {
    long errorCount = stream
        .filter(l -> l.contains("ERROR"))
        .count();
    System.out.println("Errors: " + errorCount);
} // stream (and underlying reader) closed automatically

Membaca daripada Sumber Classpath

Gabungkan dengan getClass().getResourceAsStream() dan penyalinan NIO untuk memuatkan sumber:

try (var in = getClass().getResourceAsStream("/config.json")) {
    Path tmp = Files.createTempFile("config", ".json");
    Files.copy(in, tmp, StandardCopyOption.REPLACE_EXISTING);
    String json = Files.readString(tmp);
    System.out.println(json);
}

Semakan Pantas

Kaedah manakah yang patut digunakan untuk membaca fail log besar tanpa memuatkan semua baris ke dalam memori secara serentak?

Imbas Kembali: Utiliti Fail

Perkara penting:

  • Files.readString/readAllLines/readAllBytes — membaca keseluruhan fail
  • Files.writeString/write — menulis rentetan atau baris
  • Files.copy/move dengan StandardCopyOption — menyalin/menamakan semula/memindahkan
  • Files.delete/deleteIfExists — pemadaman selamat
  • Files.lines — strim malas untuk fail besar (gunakan try-with-resources)
Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
104
Pelajaran
374

Soalan Lazim

Adakah pelajaran “Utiliti Files: Baca, Tulis, Salin, Alih” percuma?

Ya — teks penuh “Utiliti Files: Baca, Tulis, Salin, Alih” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Utiliti Files: Baca, Tulis, Salin, Alih”?

Gunakan Files.readString, writeString, copy, move dan delete untuk operasi fail biasa. Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Java Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Utiliti Files: Baca, Tulis, Salin, Alih” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Path: Mewakili Lokasi Fail
  2. Utiliti Files: Baca, Tulis, Salin, Alih
  3. Merentas Pepohon Direktori dengan Files.walk
  4. WatchService: Memantau Perubahan Fail
← Kembali ke Java Academy