Ikhtisar Java I/O Streams

Mengimpor Data di Java

Anthony Markham

VP Quant Developer

Dasar-dasar Stream

  • Stream adalah pipa data satu arah dengan urutan FIFO (First In, First Out)
  • Byte stream bekerja dengan data biner mentah (InputStream/OutputStream)
  • Character stream menangani teks dengan pengkodean otomatis (Reader/Writer)

Representasi Stream

Mengimpor Data di Java

Byte Streams

  • Digunakan untuk data biner (gambar, audio, dll.)
  • Kelas abstrak dasar: InputStream (membaca), OutputStream (menulis)
  • Implementasi utama: FileInputStream, FileOutputStream
  • Metode utama: read() mengembalikan byte, write() mengeluarkan byte

Berkas biner: gambar dan audio

Mengimpor Data di Java

Byte Streams

try (FileInputStream fis = new FileInputStream("data.bin")) {

byte[] buffer = new byte[1024]; int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) { // Proses byte dalam buffer
System.out.println("Membaca " + bytesRead + " byte"); }
} catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
Mengimpor Data di Java

Character Streams

  • Dirancang khusus untuk data teks
  • Kelas abstrak dasar: Reader (membaca teks), Writer (menulis teks)
  • Implementasi utama: FileReader, FileWriter, BufferedReader, BufferedWriter
  • Metode praktis: readLine() membaca satu baris teks penuh

Berkas CSV

Mengimpor Data di Java

Character Streams

try (BufferedReader reader = new BufferedReader(new FileReader("data.csv"))) {
    String line;

while ((line = reader.readLine()) != null) { // Proses setiap baris System.out.println(line); }
} catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
Mengimpor Data di Java

Buffered Streams - kinerja

  • Meningkatkan kinerja dengan mengurangi operasi disk
  • Baca/tulis byte stream dengan BufferedInputStream dan BufferedOutputStream
  • Baca/tulis karakter stream dengan BufferedReader, BufferedWriter
    • Baca satu baris penuh dengan readLine()
Mengimpor Data di Java

Buffered Streams - kinerja

try (BufferedReader reader = new BufferedReader(new FileReader("data.csv"))) {
    // Pemrosesan header
    String header = reader.readLine();
    System.out.println("Header: " + header);

// Pembacaan data yang efisien String line; int count = 0; while ((line = reader.readLine()) != null) { count++; } System.out.println("Membaca " + count + " baris data"); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); }
Mengimpor Data di Java

Penggabungan Stream

  • Setiap stream dalam rantai menambah fungsionalitas spesifik
  • Pola umum: FileInputStream -> InputStreamReader -> BufferedReader
  • Selalu tutup stream terluar (yang lain menutup otomatis)
Mengimpor Data di Java

Penggabungan Stream

import java.nio.charset.StandardCharsets;
try (

BufferedReader reader = new BufferedReader(
new InputStreamReader(
new FileInputStream("data.csv"),
StandardCharsets.UTF_8 )
)
) { String line; while ((line = reader.readLine()) != null) { System.out.println(line);} } catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
Mengimpor Data di Java

Penanganan Pengecualian

  • Penting untuk operasi I/O
  • Pengecualian umum: IOException, FileNotFoundException
  • Selalu gunakan try-with-resources untuk menangkap pengecualian
Mengimpor Data di Java

Penanganan Pengecualian

import java.util.ArrayList;
import java.util.List;
public static List<String> readLines(String filePath) throws IOException {

List<String> lines = new ArrayList<>(); try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; while ((line = reader.readLine()) != null) { lines.add(line); } } // Stream otomatis ditutup di sini return lines;
}
Mengimpor Data di Java

Ayo berlatih!

Mengimpor Data di Java

Preparing Video For Download...