Skip to content

Instantly share code, notes, and snippets.

@dmundt
Created November 14, 2012 13:11
Show Gist options
  • Save dmundt/4072010 to your computer and use it in GitHub Desktop.
Save dmundt/4072010 to your computer and use it in GitHub Desktop.
Dart: Sequential file write/delete operations
import 'dart:io';
Future<int> saveDelete(int i) {
var completer = new Completer();
var path = new Path.fromNative(r'D:\test.txt');
var file = new File.fromPath(path);
var outputStream = file.openOutputStream();
if (outputStream.writeString('Hello World!')) {
outputStream.close();
} else {
outputStream.onClosed = () {
file.delete().then((success) {
completer.complete(i);
});
};
outputStream.onNoPendingWrites = () {
outputStream.close();
};
}
return completer.future;
}
main() {
Future<int> future = saveDelete(0);
for (int i = 0; i < 1000; i++) {
future = future.chain((value) => saveDelete(i));
}
future.then((value) => print('$value ready!'));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment