Masukkan Password
46 5.1 How to Read Files in Dart Programming Language | Dart File Handling | Learn Dart | Dart Course
Di materi ini kita masuk lebih dalam ke File Handling, khususnya cara membaca isi file menggunakan Dart.
Ada beberapa salah dengar dari caption, misalnya:
- “do programming language” → maksudnya Dart programming language
- “package IO / import IO” → maksudnya
dart:io - “test.text” → kemungkinan maksudnya
test.txt - “directory docrun” → maksudnya
Directory.current - “substring” → method Dart
substring()
Saya jelaskan dari dasar supaya alurnya benar-benar jelas.
1. Apa yang akan kita pelajari?
Pada tutorial ini fokusnya adalah:
Bagaimana program Dart membaca isi sebuah file?
Misalnya kita punya file:
test.txt
Isinya:
Welcome back
Kita ingin Dart melakukan:
File test.txt
↓
Dibaca oleh Dart
↓
Isi file masuk ke program
↓
Disimpan ke variable
↓
Ditampilkan dengan print()
Hasilnya:
Welcome back
Jadi program kita mengambil data dari file → masuk ke program.
2. Library yang digunakan: dart:io
Untuk melakukan operasi file di Dart, kita membutuhkan library:
import 'dart:io';
Contoh lengkap:
import 'dart:io';
void main() {
// program kita
}
Apa itu dart:io?
dart:io adalah library Dart yang menyediakan berbagai kemampuan input/output (I/O).
Salah satunya adalah bekerja dengan file.
Dengan dart:io, kita bisa melakukan hal-hal seperti:
- membaca file
- membuat file
- menulis file
- mengubah isi file
- menghapus file
- membaca informasi file
- bekerja dengan directory/folder
- membaca input dari terminal
Jadi gampangnya:
dart:io= alat Dart untuk berkomunikasi dengan sistem komputer.
3. Apa itu File?
Setelah meng-import:
import 'dart:io';
kita bisa menggunakan class:
File
Misalnya:
File file = File('test.txt');
Mari kita pecah.
Bagian pertama
File
Ini adalah tipe/class yang digunakan untuk merepresentasikan sebuah file.
Bagian kedua
file
Ini adalah nama variable kita.
Bagian ketiga
File('test.txt')
Ini memberitahu Dart:
“Saya ingin bekerja dengan file bernama
test.txt.”
Jadi:
File file = File('test.txt');
bisa dibaca sebagai:
Buat variable bernama
fileyang merepresentasikan filetest.txt.
4. Di mana Dart mencari test.txt?
Nah, ini bagian yang sangat penting.
Misalnya kita menulis:
File file = File('test.txt');
Pertanyaannya:
test.txtitu berada di mana?
Jawabannya adalah Dart akan menggunakan current working directory sebagai dasar untuk relative path seperti test.txt.
5. Apa itu Current Working Directory?
Current Working Directory (CWD) adalah folder yang dianggap sebagai folder kerja saat program dijalankan.
Bayangkan kita sedang berada di sebuah ruangan.
Kalau kita berkata:
“Ambil buku bernama
buku.txt.”
Tanpa mengatakan lokasinya, orang tersebut akan mencari buku itu di ruangan tempat dia sedang bekerja.
Kurang lebih seperti itulah relative path.
Misalnya:
File('test.txt');
Artinya:
Cari
test.txtdi current working directory.
6. Cara melihat Current Working Directory
Dalam Dart kita bisa menggunakan:
Directory.current
Contoh:
import 'dart:io';
void main() {
print(Directory.current);
}
Misalnya hasilnya:
C:\Users\Budi\AppData\Local\Programs\Microsoft VS Code
Artinya program sedang menggunakan folder tersebut sebagai current working directory.
7. Kenapa Current Working Directory penting?
Karena ketika kita menulis:
File('test.txt');
Dart perlu tahu:
“Saya harus mencari
test.txtdi mana?”
Karena kita hanya memberikan:
test.txt
dan bukan lokasi lengkap, Dart menggunakan current working directory.
Misalnya:
C:\Project\Dart\
adalah current working directory.
Kemudian kita memiliki:
C:\Project\Dart\test.txt
Maka:
File('test.txt');
akan mengarah ke:
C:\Project\Dart\test.txt
8. Relative Path vs Absolute Path
Ini konsep penting dalam file handling.
Relative Path
Contoh:
File('test.txt');
atau:
File('data/test.txt');
Ini disebut relative path.
Artinya lokasi file ditentukan berdasarkan lokasi kerja saat ini.
Absolute Path
Contoh Windows:
File(r'C:\Users\Budi\Desktop\hello.txt');
Ini disebut absolute path.
Karena kita memberikan lokasi lengkap dari awal.
Misalnya:
C:
└── Users
└── Budi
└── Desktop
└── hello.txt
Dart tidak perlu menebak file tersebut berada di mana.
9. Membaca file dengan readAsStringSync()
Sekarang kita masuk ke inti tutorial.
Misalnya ada:
test.txt
isinya:
Welcome back
Kita bisa membaca menggunakan:
String content = file.readAsStringSync();
Kemudian:
print(content);
Program lengkap:
import 'dart:io';
void main() {
File file = File('test.txt');
String content = file.readAsStringSync();
print(content);
}
Output:
Welcome back
10. Mari kita pahami setiap baris
Baris 1
import 'dart:io';
Kita mengambil library dart:io.
Baris 2
File file = File('test.txt');
Kita memberitahu Dart:
Saya ingin bekerja dengan file
test.txt.
Perhatikan bahwa pada tahap ini kita belum membaca isi file.
Kita baru membuat objek yang menunjuk ke file tersebut.
Baris 3
String content = file.readAsStringSync();
Nah, di sinilah proses membaca terjadi.
readAsStringSync()
artinya:
Baca isi file sebagai
String.
Kemudian hasilnya dimasukkan ke:
content
Misalnya file berisi:
Welcome back
maka:
content
akan berisi:
"Welcome back"
Baris 4
print(content);
Menampilkan isi file ke terminal.
Hasil:
Welcome back
11. Kenapa menggunakan String?
Karena isi file teks biasanya berupa karakter/text.
Misalnya file:
test.txt
isinya:
Hello Dart
Welcome to programming
Ketika dibaca menggunakan:
readAsStringSync()
hasilnya berupa:
String
Jadi:
String content
sangat cocok.
12. Apa arti Sync?
Kita melihat:
readAsStringSync()
Ada:
Sync
Sync adalah singkatan dari synchronous.
Untuk pemahaman awal, anggap saja:
Program menunggu operasi membaca file selesai sebelum lanjut ke baris berikutnya.
Contohnya:
String content = file.readAsStringSync();
print(content);
Urutannya:
1. Baca file
↓
2. Tunggu sampai selesai
↓
3. Simpan hasil ke content
↓
4. print(content)
Jadi print(content) dilakukan setelah pembacaan selesai.
Nanti di Dart kita juga akan belajar versi asynchronous seperti:
readAsString()
yang menghasilkan Future<String>.
Untuk tutorial ini, cukup pahami:
readAsStringSync()
= baca file secara synchronous.
13. Kalau isi file diubah bagaimana?
Misalnya awalnya:
Welcome back
Program:
String content = file.readAsStringSync();
print(content);
hasil:
Welcome back
Kemudian kita ubah file menjadi:
My name is Budi
Kita jalankan lagi program.
Hasilnya:
My name is Budi
Kenapa?
Karena Dart membaca isi file yang terbaru saat program dijalankan.
Alurnya:
test.txt
↓
isinya sekarang
↓
readAsStringSync()
↓
content
↓
print()
Jadi variable content bukan menyimpan isi file secara permanen. Ia hanya mendapatkan isi file ketika kita menjalankan operasi pembacaan tersebut.
14. Mendapatkan path file
Selain membaca isi file, kita juga bisa mendapatkan informasi mengenai file.
Misalnya:
print(file.path);
Contoh:
import 'dart:io';
void main() {
File file = File('test.txt');
print(file.path);
}
Jika kita menggunakan relative path, hasilnya bisa:
test.txt
Ini karena kita memang membuat file dengan:
File('test.txt')
15. Mendapatkan absolute path
Kalau kita ingin melihat lokasi lengkap file, kita bisa menggunakan:
file.absolute.path
Contoh:
import 'dart:io';
void main() {
File file = File('test.txt');
print(file.absolute.path);
}
Misalnya hasil:
C:\Users\Budi\AppData\Local\Programs\Microsoft VS Code\test.txt
Perhatikan perbedaannya:
Relative
file.path
bisa menghasilkan:
test.txt
Absolute
file.absolute.path
menghasilkan lokasi lengkap:
C:\Users\Budi\...\test.txt
16. Mengetahui kapan file terakhir diubah
Dart juga bisa mengetahui waktu terakhir file dimodifikasi.
Gunakan:
file.lastModifiedSync()
Contoh:
import 'dart:io';
void main() {
File file = File('test.txt');
print(file.lastModifiedSync());
}
Hasilnya kira-kira:
2026-09-08 10:30:15.000
Artinya file tersebut terakhir mengalami perubahan pada waktu tersebut.
17. Membaca file dari folder lain
Sekarang misalnya kita punya:
Desktop
└── hello.txt
Sedangkan program Dart kita berada di folder lain.
Kita bisa memberikan path menuju file tersebut.
Contoh Windows:
File file = File(
r'C:\Users\Budi\Desktop\hello.txt',
);
Kemudian:
String content = file.readAsStringSync();
print(content);
Jadi:
import 'dart:io';
void main() {
File file = File(
r'C:\Users\Budi\Desktop\hello.txt',
);
String content = file.readAsStringSync();
print(content);
}
18. Kenapa ada r sebelum string?
Perhatikan:
r'C:\Users\Budi\Desktop\hello.txt'
Ada huruf:
r
di depan string.
Ini disebut raw string.
Raw string berguna terutama pada Windows path karena Windows menggunakan backslash:
C:\Users\Budi\Desktop
Dalam string biasa, backslash dapat memiliki arti khusus sebagai escape character.
Dengan raw string:
r'C:\Users\Budi\Desktop\hello.txt'
Dart memperlakukan backslash lebih sederhana sebagai bagian dari teks.
Ini adalah kebiasaan yang sangat berguna ketika menulis Windows path.
19. Membaca file CSV
Tutorial juga menunjukkan file:
hello.csv
CSV adalah singkatan dari:
Comma-Separated Values
Contoh isi:
name,age,country
Budi,20,Indonesia
Andi,22,Malaysia
Siti,21,Singapore
Data dipisahkan menggunakan tanda koma:
name,age,country
↑ ↑
koma koma
Kalau kita hanya ingin membaca isi mentah CSV, kita tetap bisa menggunakan:
String content = file.readAsStringSync();
Contoh:
import 'dart:io';
void main() {
File file = File('hello.csv');
String content = file.readAsStringSync();
print(content);
}
Output:
name,age,country
Budi,20,Indonesia
Andi,22,Malaysia
Siti,21,Singapore
20. Penting: membaca CSV ≠ mengolah CSV
Ini perlu diperhatikan.
Kode:
file.readAsStringSync()
hanya membaca teks mentah.
Misalnya:
Budi,20,Indonesia
Dart mendapatkan sebuah String:
"Budi,20,Indonesia"
Dart belum otomatis mengetahui bahwa:
Budi
adalah nama,
20
adalah umur,
dan:
Indonesia
adalah negara.
Untuk mengolah CSV sebagai data terstruktur, kita perlu melakukan parsing atau menggunakan package tertentu.
Jadi:
readAsStringSync()
↓
mendapatkan teks
bukan:
readAsStringSync()
↓
langsung menjadi tabel
21. Membaca hanya sebagian isi file
Misalnya file kita sangat panjang:
Lorem ipsum ..............
..............
..............
..............
Kita tidak ingin menampilkan semuanya.
Kita hanya ingin mengambil 100 karakter pertama.
Kita bisa menggunakan:
content.substring(0, 100);
Contoh:
String content = file.readAsStringSync();
print(content.substring(0, 100));
22. Bagaimana cara kerja substring()?
Misalnya:
String text = "Hello World";
Index-nya:
H e l l o W o r l d
0 1 2 3 4 5 6 7 8 9 10
Kalau kita:
text.substring(0, 5)
hasilnya:
Hello
Kenapa?
Karena:
0 → mulai dari index 0
5 → berhenti sebelum index 5
Jadi index akhir tidak ikut diambil.
23. Contoh substring(0, 100)
Misalnya:
String content = file.readAsStringSync();
String first100 = content.substring(0, 100);
print(first100);
Alurnya:
File
↓
readAsStringSync()
↓
content
↓
substring(0, 100)
↓
ambil karakter index 0 sampai sebelum 100
↓
print()
24. Hati-hati dengan substring()
Ada satu hal penting.
Kalau panjang text kurang dari 100 karakter:
content.substring(0, 100)
bisa menghasilkan error.
Misalnya:
String content = "Hello";
Panjangnya hanya 5 karakter.
Kalau kita melakukan:
content.substring(0, 100);
Dart akan error karena kita meminta karakter sampai index yang tidak tersedia.
Lebih aman:
int end = content.length < 100 ? content.length : 100;
print(content.substring(0, end));
Atau:
print(content.substring(
0,
content.length < 100 ? content.length : 100,
));
Untuk pemula, cukup ingat:
substring()harus memperhatikan panjang String.
25. Gambaran besar tutorial ini
Sebenarnya semua yang dipelajari bisa diringkas seperti ini:
FILE
│
│
▼
File('test.txt')
│
▼
readAsStringSync()
│
▼
String content
│
▼
print(content)
Contoh nyata:
test.txt
──────────────
Welcome back
──────────────
↓
↓ read
↓
"Welcome back"
↓
content
↓
print
↓
Welcome back
26. Contoh program lengkap
Berikut contoh yang menggabungkan beberapa hal dari tutorial:
import 'dart:io';
void main() {
File file = File('test.txt');
// Membaca isi file
String content = file.readAsStringSync();
// Menampilkan isi
print('Isi file:');
print(content);
// Menampilkan path
print('\nPath:');
print(file.path);
// Menampilkan absolute path
print('\nAbsolute path:');
print(file.absolute.path);
// Menampilkan waktu terakhir dimodifikasi
print('\nLast modified:');
print(file.lastModifiedSync());
}
Kurang lebih output:
Isi file:
Welcome back
Path:
test.txt
Absolute path:
C:\Users\Budi\...\test.txt
Last modified:
2026-09-08 10:30:15.000
27. Method-method penting dari materi ini
| Method/Property | Kegunaan |
|---|---|
File('test.txt') | Menentukan file yang ingin digunakan |
readAsStringSync() | Membaca isi file sebagai String |
path | Mendapatkan path yang diberikan |
absolute.path | Mendapatkan absolute path |
lastModifiedSync() | Mendapatkan waktu terakhir file diubah |
Directory.current | Mengetahui current working directory |
substring() | Mengambil sebagian String |
28. Hal paling penting yang perlu kamu pahami
Jangan hanya menghafal:
readAsStringSync()
Pahami konsepnya.
Konsep 1 — File
File file = File('test.txt');
Artinya:
Saya ingin bekerja dengan file
test.txt.
Konsep 2 — readAsStringSync()
file.readAsStringSync();
Artinya:
Ambil isi file tersebut sebagai String.
Konsep 3 — Variable
String content = file.readAsStringSync();
Artinya:
Ambil isi file dan simpan ke variable
content.
Konsep 4 — Print
print(content);
Artinya:
Tampilkan isi file ke terminal.
29. Jangan tertukar antara path dan isi file
Ini juga penting.
Misalnya:
File file = File('test.txt');
File tersebut berisi:
Hello Dart
Maka:
file.path
berhubungan dengan:
test.txt
sedangkan:
file.readAsStringSync()
menghasilkan:
Hello Dart
Jadi:
file.path
↓
lokasi/nama file
readAsStringSync()
↓
isi file
30. Kesimpulan Chapter 5 bagian membaca file
Dari materi ini, kamu sekarang sudah mengenal konsep dasar membaca file di Dart.
Urutan paling pentingnya adalah:
import 'dart:io';
void main() {
File file = File('test.txt');
String content = file.readAsStringSync();
print(content);
}
Baca sebagai kalimat:
Import
dart:io, buat objekFileyang menunjuk ketest.txt, baca isinya sebagaiString, lalu tampilkan isinya.
Dan ada satu konsep besar yang sebaiknya kamu tanamkan:
Relative path
↓
Current Working Directory
↓
File
↓
readAsStringSync()
↓
String
↓
Program
Sedangkan kalau file berada di lokasi lain:
Absolute path
↓
File
↓
readAsStringSync()
↓
String
Intinya: File menentukan file mana yang ingin kita akses, sedangkan readAsStringSync() mengambil isi file tersebut ke dalam program.