Đọc và Ghi File trong Dart
1. Giới thiệu
Dart sử dụng thư viện dart:io để làm việc với file system.
2. Import và tạo File object
import 'dart:io';
void main() {
var file = File('example.txt');
print(file.path);
}3. Ghi file đồng bộ
import 'dart:io';
void main() {
var file = File('test.txt');
// Ghi string
file.writeAsStringSync('Hello, World!');
// Ghi với mode append
file.writeAsStringSync('\nNew line', mode: FileMode.append);
// Ghi bytes
file.writeAsBytesSync([72, 101, 108, 108, 111]);
}4. Ghi file bất đồng bộ
import 'dart:io';
Future<void> main() async {
var file = File('test.txt');
await file.writeAsString('Hello, Dart!');
print('File written successfully');
}5. Đọc file đồng bộ
import 'dart:io';
void main() {
var file = File('test.txt');
// Đọc toàn bộ string
String content = file.readAsStringSync();
print(content);
// Đọc từng dòng
List<String> lines = file.readAsLinesSync();
for (var line in lines) {
print(line);
}
// Đọc bytes
List<int> bytes = file.readAsBytesSync();
print(bytes);
}6. Đọc file bất đồng bộ
import 'dart:io';
Future<void> main() async {
var file = File('test.txt');
String content = await file.readAsString();
print(content);
List<String> lines = await file.readAsLines();
lines.forEach(print);
}7. Kiểm tra file tồn tại
import 'dart:io';
void main() {
var file = File('test.txt');
if (file.existsSync()) {
print('File exists');
print('Size: ${file.lengthSync()} bytes');
print('Modified: ${file.lastModifiedSync()}');
} else {
print('File does not exist');
}
}8. Làm việc với Directory
import 'dart:io';
void main() {
var dir = Directory('my_folder');
// Tạo directory
if (!dir.existsSync()) {
dir.createSync();
}
// Liệt kê files
dir.listSync().forEach((entity) {
if (entity is File) {
print('File: ${entity.path}');
} else if (entity is Directory) {
print('Dir: ${entity.path}');
}
});
}9. Xử lý lỗi
import 'dart:io';
void main() {
var file = File('nonexistent.txt');
try {
var content = file.readAsStringSync();
print(content);
} on FileSystemException catch (e) {
print('Error: ${e.message}');
print('Path: ${e.path}');
}
}10. Stream đọc file lớn
import 'dart:io';
import 'dart:convert';
Future<void> main() async {
var file = File('large_file.txt');
await for (var line in file.openRead()
.transform(utf8.decoder)
.transform(LineSplitter())) {
print(line);
}
}📝 Tóm tắt
- Import
dart:iođể làm việc với files Syncmethods cho đồng bộawaitmethods cho bất đồng bộFilecho files,Directorycho folders- Stream để đọc file lớn hiệu quả
- Try-catch cho xử lý lỗi
Last updated on