dart:io

Referensi

import 'dart:io';Code language: JavaScript (javascript)

Peringatan Penting

dart:io tidak dapat digunakan di platform Web!
Dukungan: program baris perintah Dart, server, aplikasi Flutter non-web (Android/iOS/Windows/macOS/Linux).

Operasi Berkas dan Direktori

FileSystemEntity adalah kelas induk; File (berkas) dan Directory (direktori) mewarisi kelas ini.

1. Membaca berkas

Pembacaan lengkap (cocok untuk berkas kecil)

void main() async {
  var file = File("config.txt");
  try {
    // Baca seluruh konten sebagai string UTF-8
    String content = await file.readAsString();
    // Baca lalu pisah konten per baris
    List<String> lines = await file.readAsLines();
    // Baca data biner sebagai daftar byte List<int>
    List<int> bytes = await file.readAsBytes();
  } catch (e) {
    print("Gagal membaca berkas: $e");
  }
}Code language: Dart (dart)

Contoh lengkap yang dapat dijalankan

Buat berkas txt terlebih dahulu dan sesuaikan lokasi: D:/dartdemo/firstdart/bin/config.txt

import 'dart:io';

void main() async {
  var file = File("D:/dartdemo/firstdart/bin/config.txt");
  try {
    String content = await file.readAsString();
    print("===== readAsString Teks lengkap =====");
    print(content);

    List<String> lines = await file.readAsLines();
    print("\n===== readAsLines Baca per baris =====");
    for (var line in lines) {
      print(line);
    }

    List<int> bytes = await file.readAsBytes();
    print("\n===== readAsBytes Daftar byte (30 pertama) =====");
    print(bytes.take(30).toList());
    print("Ukuran total berkas dalam byte: ${bytes.length}");
  } catch (e) {
    print("Gagal membaca berkas: $e");
  }
}Code language: Dart (dart)

Hasil eksekusi

D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
===== readAsString Teks lengkap =====
The minimal requirements for a library are:

pubspec file
The pubspec.yaml file for a library is the same as for an application package
—there is no special designation to indicate that the package is a library.

lib directory
As you might expect, the library code lives under the lib directory and is public to other packages. You can create any hierarchy under lib, as needed. By convention, implementation code is placed under lib/src. Code under lib/src is considered private; other packages should never need to import src/.... To make APIs under lib/src public, you can export lib/src files from a file that's directly under lib.

===== readAsLines Baca per baris =====
The minimal requirements for a library are:

pubspec file
The pubspec.yaml file for a library is the same as for an application package
—there is no special designation to indicate that the package is a library.

lib directory
As you might expect, the library code lives under the lib directory and is public to other packages. You can create any hierarchy under lib, as needed. By convention, implementation code is placed under lib/src. Code under lib/src is considered private; other packages should never need to import src/.... To make APIs under lib/src public, you can export lib/src files from a file that's directly under lib.

===== readAsBytes Daftar byte (30 pertama) =====
[84, 104, 101, 32, 109, 105, 110, 105, 109, 97, 108, 32, 114, 101, 113, 117, 105, 114, 101, 109, 101, 110, 116, 115, 32, 102, 111, 114, 32, 97]
Ukuran total berkas dalam byte: 644Code language: PHP (php)
Pembacaan menggunakan Stream

Disarankan untuk berkas besar: memproses data secara bertahap saat dibaca

Dapat digabungkan dengan dekoder dari dart:convert, mengembalikan Stream<List<int>>

import 'dart:io';
import 'dart:convert';

void main() async {
  var file = File("D:/dartdemo/firstdart/bin/config.txt");
  Stream<List<int>> stream = file.openRead();

  var lineStream = stream
      .transform(utf8.decoder)
      .transform(const LineSplitter());

  try {
    await for (var line in lineStream) {
      print(line);
    }
    print("Pembacaan selesai");
  } catch (e) {
    print(e);
  }
}Code language: Dart (dart)

Hasil eksekusi

D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
The minimal requirements for a library are:

pubspec file
The pubspec.yaml file for a library is the same as for an application package
—there is no special designation to indicate that the package is a library.

lib directory
As you might expect, the library code lives under the lib directory and is public to other packages. 
You can create any hierarchy under lib, as needed. By convention, implementation code is placed under lib/src.
 Code under lib/src is considered private; other packages should never need to import src/.... To make APIs under lib/src public,
 you can export lib/src files from a file that's directly under lib.
Pembacaan selesaiCode language: PHP (php)

2. Menulis berkas (IOSink)

import 'dart:io';

void main() async {
  var logFile = File("log.txt");
  // FileMode.write: timpa konten yang ada (mode bawaan)
  var sink = logFile.openWrite(mode: FileMode.write);

  sink.write("Isi catatan log\n");
  sink.add([48,49]); // Tulis data biner byte

  await sink.flush(); // Kosongkan buffer
  await sink.close(); // Wajib tutup koneksi

  // Mode tambah teks di akhir berkas
  // var sink = logFile.openWrite(mode: FileMode.append);
}Code language: Dart (dart)

Setelah menjalankan kode

Berkas log.txt akan dibuat di folder proyek D:\dartdemo\firstdart

Mode yang tersedia:

  • FileMode.write : buat dan timpa isi berkas
  • FileMode.append : tambah data di akhir berkas
  • FileMode.writeOnly / readWrite mode baca dan tulis

3. Telusuri direktori

Directory.list() mengembalikan Stream untuk menampilkan semua berkas dan folder di direktori

void main() async {
  var dir = Directory("./tmp");
  try {
    var entityStream = dir.list();
    await for (FileSystemEntity entity in entityStream) {
      if (entity is File) {
        print("Berkas: ${entity.path}");
      } else if (entity is Directory) {
        print("Direktori: ${entity.path}");
      }
    }
  } catch (e) {
    print(e);
  }
}Code language: Dart (dart)

4. Operasi umum berkas & direktori

var f = File("test.txt");
await f.create();          // Buat berkas
await f.delete();          // Hapus berkas
await f.length();          // Dapatkan ukuran dalam byte

var d = Directory("data");
await d.create(recursive: true); // Buat folder bersarang
await d.delete(recursive: true);  // Hapus folder beserta isinyaCode language: JavaScript (javascript)

Server HTTP HttpServer

Membuat server web Dart, mendengarkan port dan menangani permintaan.

void main() async {
  // Pasang alamat dan port
  HttpServer server = await HttpServer.bind("localhost", 8888);
  print("Server berjalan http://localhost:8888");

  await for (HttpRequest request in server) {
    handleRequest(request);
  }
}

void handleRequest(HttpRequest req) {
  HttpResponse res = req.response;
  if (req.uri.path == "/dart") {
    res.headers.contentType = ContentType.text;
    res.write("Hello Dart HttpServer");
  } else {
    res.statusCode = HttpStatus.notFound;
  }
  res.close(); // Harus tutup respons agar data terkirim
}Code language: JavaScript (javascript)

Contoh praktis lengkap

import 'dart:io';

void main() async {
  HttpServer server = await HttpServer.bind("localhost", 8888);
  print("Server berjalan http://localhost:8888");
  print("Akses: http://localhost:8888/dart");

  await for (HttpRequest request in server) {
    handleRequest(request);
  }
}

void handleRequest(HttpRequest req) {
  HttpResponse res = req.response;
  if (req.uri.path == "/dart") {
    res.headers.contentType = ContentType.text;
    res.write("Hello Dart HttpServer");
  } else if (req.uri.path == "/") {
    res.headers.contentType = ContentType.text;
    res.write("Halaman utama. Kunjungi /dart");
  } else {
    res.statusCode = HttpStatus.notFound;
    res.write("404 Not Found");
  }
  res.close();
}Code language: Dart (dart)

Buka di browser: localhost:8888/dart

Klien HTTP HttpClient

Saran resmi penting: hindari menggunakan HttpClient secara langsung!
HttpClient bergantung pada dart:io, dukungan lintas platform terbatas. Gunakan paket eksternal package:http untuk proyek nyata.

Contoh sederhana hanya untuk referensi:

void main() async {
  var client = HttpClient();
  try {
    var req = await client.getUrl(Uri.parse("https://foxdevelop.com"));
    var res = await req.close();
    await for(var chunk in res) {
      // Terima aliran byte respons
    }
  } finally {
    client.close();
  }
}Code language: Dart (dart)

Contoh kode lengkap yang dapat dijalankan

import 'dart:io';
import 'dart:convert';

void main() async {
  var client = HttpClient();
  try {
    var req = await client.getUrl(Uri.parse("https://foxdevelop.com"));
    var res = await req.close();

    List<int> allBytes = [];
    await for (var chunk in res) {
      allBytes.addAll(chunk);
    }
    String html = utf8.decode(allBytes);
    print(html);
  } finally {
    client.close();
  }
}Code language: Dart (dart)

dart:io

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *