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 berkasFileMode.append: tambah data di akhir berkasFileMode.writeOnly/readWritemode 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!
HttpClientbergantung pada dart:io, dukungan lintas platform terbatas. Gunakan paket eksternalpackage:httpuntuk 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