创建文件
import 'dart:io';
main(List<String> arguments) {
var systemTempDir = Directory.systemTemp;
//在系统临时目录下创建两个目录一个文件
new File('${systemTempDir.path}/dir/subdir/file.txt').create(recursive: true)
.then((file) {
print(file.path);
});
}
执行后看看系统临时目录下是否有创建好的目录和文件
以字符串读取文件
import 'dart:io';
main(List<String> arguments) {
new File('F:/file.txt').readAsString().then((String contents) {
print(contents);
});
}
查看读取到的文件内容是否正确
以列表读取文件
import 'dart:io';
main(List<String> arguments) {
new File('F:/file.txt').readAsLines().then((List<String> lines) {
lines.forEach((line) {
print(line);
});
});
}
效果如下
以字节读取文件
import 'dart:io';
import 'package:crypto/crypto.dart';
main(List<String> arguments) {
new File('F:/file.txt').readAsBytes().then((bytes) {
String base64 = CryptoUtils.bytesToBase64(bytes);
print(base64);
});
}
效果如下,需要的crypto包下载地址http://pan.baidu.com/s/1dDARcrB
以流读取文件
import 'dart:io';
import 'dart:convert';
import 'dart:async';
main(List<String> arguments) {
final file = new File('F:/file.txt');
//把文件转换成流
Stream<List<int>> inputStream = file.openRead();
inputStream
//解码为UTF8
.transform(UTF8.decoder)
//流转换为列表
.transform(new LineSplitter())
//设置输出
.listen((String line) {
print('$line有${line.length}个字节');
},
onDone: () { print('文件已关闭'); },
//出错时输出错误信息
onError: (e) { print(e.toString()); });
}
效果如下
读取文件的错误处理
import 'dart:io';
void handleError(e) {
print('有一个${e.runtimeType}错误');
print(e.message);
}
main(List<String> arguments) {
final filename = 'non_existent_file.txt';
//读取并输出文件内容
new File(filename).readAsString()
.then(print)
//捕捉错误
.catchError(handleError);
/*
//下面的代码已经提取到handleError方法中
.catchError((e) {
print('有一个${e.runtimeType}错误');
print('无法读取$filename');
});
*/
}
读取文件出错后,按我们自定义的效果输出提示
将字符串写入文件
import 'dart:io';
main(List<String> arguments) {
final filename = 'F:/file.txt';
new File(filename).writeAsString('some content')
.then((File file) {
file.readAsString().then(print);
});
}
效果如下
将字节写入文件
import 'dart:io';
import 'dart:convert';
main(List<String> arguments) {
final string = 'Dart!';
//编码为UTF8
var encodedData = UTF8.encode(string);
new File('F:/file.txt')
//把字节写入文件
.writeAsBytes(encodedData)
//读取并输出文件内容
.then((file) => file.readAsBytes())
.then((data) {
print(UTF8.decode(data));
});
}
效果如下
将流写入文件
import 'dart:io';
main(List<String> arguments) {
var file = new File('F:/file.txt');
//创建一个新的IOSink
var sink = file.openWrite();
//将对象转成字符串,并写入文件
sink.write('FILE ACCESSED ${new DateTime.now()}\n');
//关闭IOSink释放系统资源
sink.close();
}
效果如下