Belajar Java - Input/Output & Pengelolaan File
Episode 8 of 24

Belajar Java - Input/Output & Pengelolaan File

Episode ini membahas I/O dan file di Java: dasar java.io dan java.nio, membaca dan menulis file teks, binary, dan CSV, Path API dan Files utility, working directory, serta praktik terbaik resource management dengan try-with-resources.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Hampir setiap aplikasi berinteraksi dengan file: membaca konfigurasi, menulis log, mengimpor data, atau mengekspor laporan. Episode 8 membahas input/output dan pengelolaan file di Java — dari API klasik java.io hingga java.nio modern. Kalian akan belajar membaca dan menulis file teks, binary, dan CSV, serta menerapkan praktik terbaik resource management.

Dasar I/O Java: java.io dan java.nio

java.io adalah API klasik berbasis stream: FileInputStream, FileOutputStream, FileReader, dan FileWriter. java.nio (diperkenalkan Java 7) menawarkan API yang lebih modern dan fleksibel: Path, Files, channel, dan buffer. Untuk kebutuhan sehari-hari, java.nio.file.Files adalah titik masuk yang ringkas.

Membaca File dengan Files

Baca seluruh isi file teks dalam satu baris kode:

Membaca file teks
import java.nio.file.*;
 
public class BacaTeks {
    public static void main(String[] args) throws IOException {
        String isi = Files.readString(Path.of("catatan.txt"));
        System.out.println(isi);
    }
}

Files.readString(Path.of("catatan.txt")) membaca seluruh file menjadi satu string. Untuk file besar, gunakan readAllLines atau stream.

Membaca dan Menulis File Teks

Gunakan Files.writeString untuk menulis teks, atau Files.write untuk daftar baris:

Menulis file teks
import java.nio.file.*;
import java.util.List;
 
public class TulisTeks {
    public static void main(String[] args) throws IOException {
        Files.writeString(Path.of("output.txt"), "Halo Java");
        Files.write(Path.of("baris.txt"), List.of("Baris 1", "Baris 2"));
    }
}

Membaca Per Baris dengan BufferedReader

Untuk memproses file besar secara efisien, baca per baris:

Membaca per baris
import java.io.*;
import java.nio.file.*;
 
public class BacaBaris {
    public static void main(String[] args) throws IOException {
        try (BufferedReader reader = Files.newBufferedReader(Path.of("log.txt"))) {
            String baris;
            while ((baris = reader.readLine()) != null) {
                System.out.println(baris);
            }
        }
    }
}

Membaca dan Menulis File Binary

File binary seperti gambar, audio, dan arsip tidak bisa dibaca sebagai teks. Gunakan stream byte dengan Files.copy untuk menyalin, atau Files.readAllBytes untuk memprosesnya:

Menyalin file binary
import java.nio.file.*;
 
public class SalinBinary {
    public static void main(String[] args) throws IOException {
        Path sumber = Path.of("gambar.png");
        Path tujuan = Path.of("gambar-copy.png");
        Files.copy(sumber, tujuan, StandardCopyOption.REPLACE_EXISTING);
    }
}

Files.copy dengan opsi REPLACE_EXISTING menyalin file binary dan menimpa tujuan jika sudah ada.

Membaca dan Menulis File CSV

CSV (Comma-Separated Values) adalah format teks dengan nilai dipisahkan koma. Baca per baris dan pecah dengan split:

Membaca file CSV
import java.io.*;
import java.nio.file.*;
 
public class BacaCsv {
    public static void main(String[] args) throws IOException {
        try (BufferedReader reader = Files.newBufferedReader(Path.of("produk.csv"))) {
            String baris;
            while ((baris = reader.readLine()) != null) {
                String[] kolom = baris.split(",");
                System.out.println(kolom[0] + " - " + kolom[1]);
            }
        }
    }
}

Menulis CSV cukup dengan menyusun string per baris:

Menulis file CSV
List<String> baris = List.of("1,Java,50000", "2,Python,45000");
Files.write(Path.of("produk.csv"), baris);

Untuk CSV yang kompleks, pertimbangkan library seperti OpenCSV.

Path API, Files Utility, dan Working Directory

Operasi Path dan Files

java.nio.file menyediakan berbagai operasi file:

Operasi Path dan Files
import java.nio.file.*;
 
public class OperasiFile {
    public static void main(String[] args) throws IOException {
        Path dir = Path.of("backup");
        Files.createDirectories(dir);
        Files.move(Path.of("a.txt"), Path.of("b.txt"));
        Files.deleteIfExists(Path.of("sementara.txt"));
    }
}

Working Directory

Working directory adalah direktori tempat proses dijalankan — titik awal untuk path relatif:

Melihat working directory
pwd

Path relatif seperti Path.of("data.txt") selalu diinterpretasikan relatif terhadap working directory.

Praktik Terbaik Resource Management

Aturan emas: setiap resource yang dibuka wajib ditutup. Try-with-resources menangani ini secara otomatis dan aman terhadap exception:

Praktik resource management
try (BufferedReader reader = Files.newBufferedReader(Path.of("input.txt"));
     BufferedWriter writer = Files.newBufferedWriter(Path.of("output.txt"))) {
    String baris;
    while ((baris = reader.readLine()) != null) {
        writer.write(baris.toUpperCase());
        writer.newLine();
    }
}

Penutup

Episode 8 mengajarkan I/O dan pengelolaan file: membedakan java.io dan java.nio, membaca dan menulis file teks, binary, dan CSV, memanfaatkan Path API dan Files utility, memahami working directory, serta menerapkan try-with-resources untuk resource management.

Inti yang harus dibawa pulang:

  • java.nio.file.Files adalah titik masuk I/O modern yang ringkas.
  • File teks dibaca dengan readString atau readAllLines.
  • File binary memakai Files.copy atau readAllBytes.
  • CSV dibaca per baris dan dipecah dengan split(",").
  • Path relatif diinterpretasikan terhadap working directory.
  • Selalu gunakan try-with-resources untuk menutup resource otomatis.

Di episode 9 selanjutnya kita akan membahas data binding dan JSON processing — proses serialisasi dan deserialisasi JSON di Java, library populer Jackson, Gson, dan JSON-B, mapping objek Java ke JSON dan sebaliknya, serta validasi data input dan error handling saat parsing. Saatnya berbicara dengan dunia luar!

Belajar Java - Input/Output & Pengelolaan File | Belajar Java