| Index: sdk/lib/io/file_impl.dart
|
| diff --git a/sdk/lib/io/file_impl.dart b/sdk/lib/io/file_impl.dart
|
| index 078999024b75f798800ff7b1ef9b981865a35879..a970163b1c66b6657325dffccad2242dbf811e62 100644
|
| --- a/sdk/lib/io/file_impl.dart
|
| +++ b/sdk/lib/io/file_impl.dart
|
| @@ -196,6 +196,12 @@ class _FileStreamConsumer extends StreamConsumer<List<int>> {
|
| Future<File> close() {
|
| return _openFuture.then((openedFile) => openedFile.close());
|
| }
|
| +
|
| + Future flush() {
|
| + return _openFuture
|
| + .then((openedFile) => openedFile.flush())
|
| + .then((randomAccessfile) => new Future.value(null));
|
| + }
|
| }
|
|
|
|
|
| @@ -540,28 +546,38 @@ class _File implements File {
|
| }
|
|
|
| Future<File> writeAsBytes(List<int> bytes,
|
| - {FileMode mode: FileMode.WRITE}) {
|
| + {FileMode mode: FileMode.WRITE,
|
| + bool flush: false}) {
|
| try {
|
| IOSink sink = openWrite(mode: mode);
|
| sink.add(bytes);
|
| - sink.close();
|
| + if (flush) {
|
| + sink.flush().then((_) => sink.close());
|
| + } else {
|
| + sink.close();
|
| + }
|
| return sink.done.then((_) => this);
|
| } catch (e) {
|
| return new Future.error(e);
|
| }
|
| }
|
|
|
| - void writeAsBytesSync(List<int> bytes, {FileMode mode: FileMode.WRITE}) {
|
| + void writeAsBytesSync(List<int> bytes,
|
| + {FileMode mode: FileMode.WRITE,
|
| + bool flush: false}) {
|
| RandomAccessFile opened = openSync(mode: mode);
|
| opened.writeFromSync(bytes, 0, bytes.length);
|
| + if (flush) opened.flushSync();
|
| opened.closeSync();
|
| }
|
|
|
| Future<File> writeAsString(String contents,
|
| {FileMode mode: FileMode.WRITE,
|
| - Encoding encoding: Encoding.UTF_8}) {
|
| + Encoding encoding: Encoding.UTF_8,
|
| + bool flush: false}) {
|
| try {
|
| - return writeAsBytes(_encodeString(contents, encoding), mode: mode);
|
| + return writeAsBytes(
|
| + _encodeString(contents, encoding), mode: mode, flush: flush);
|
| } catch (e) {
|
| return new Future.error(e);
|
| }
|
| @@ -569,8 +585,10 @@ class _File implements File {
|
|
|
| void writeAsStringSync(String contents,
|
| {FileMode mode: FileMode.WRITE,
|
| - Encoding encoding: Encoding.UTF_8}) {
|
| - writeAsBytesSync(_encodeString(contents, encoding), mode: mode);
|
| + Encoding encoding: Encoding.UTF_8,
|
| + bool flush: false}) {
|
| + writeAsBytesSync(
|
| + _encodeString(contents, encoding), mode: mode, flush: flush);
|
| }
|
|
|
| String get path => _path;
|
|
|