Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of dart.io; | 5 part of dart.io; |
| 6 | 6 |
| 7 // Read the file in blocks of size 64k. | 7 // Read the file in blocks of size 64k. |
| 8 const int _BLOCK_SIZE = 64 * 1024; | 8 const int _BLOCK_SIZE = 64 * 1024; |
| 9 | 9 |
| 10 class _FileStream extends Stream<List<int>> { | 10 class _FileStream extends Stream<List<int>> { |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 191 } catch (e, stackTrace) { | 191 } catch (e, stackTrace) { |
| 192 error(e, stackTrace); | 192 error(e, stackTrace); |
| 193 } | 193 } |
| 194 }, onDone: () { | 194 }, onDone: () { |
| 195 completer.complete(_file); | 195 completer.complete(_file); |
| 196 }, onError: error, cancelOnError: true); | 196 }, onError: error, cancelOnError: true); |
| 197 }).catchError(completer.completeError); | 197 }).catchError(completer.completeError); |
| 198 return completer.future; | 198 return completer.future; |
| 199 } | 199 } |
| 200 | 200 |
| 201 Future<File> close() => | 201 Future close() => _openFuture.then((openedFile) => openedFile.close()); |
|
floitsch
2017/04/27 22:10:25
Please use my changes instead:
https://codereview.
Bob Nystrom
2017/04/28 00:13:07
Done. (FWIW, I changed it the way I did because _F
| |
| 202 _openFuture.then<File>((openedFile) => openedFile.close()); | |
| 203 } | 202 } |
| 204 | 203 |
| 205 // Class for encapsulating the native implementation of files. | 204 // Class for encapsulating the native implementation of files. |
| 206 class _File extends FileSystemEntity implements File { | 205 class _File extends FileSystemEntity implements File { |
| 207 final String path; | 206 final String path; |
| 208 | 207 |
| 209 // Constructor for file. | 208 // Constructor for file. |
| 210 _File(this.path) { | 209 _File(this.path) { |
| 211 if (path is! String) { | 210 if (path is! String) { |
| 212 throw new ArgumentError('${Error.safeToString(path)} ' | 211 throw new ArgumentError('${Error.safeToString(path)} ' |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 548 _tryDecode(readAsBytesSync(), encoding); | 547 _tryDecode(readAsBytesSync(), encoding); |
| 549 | 548 |
| 550 Future<List<String>> readAsLines({Encoding encoding: UTF8}) => | 549 Future<List<String>> readAsLines({Encoding encoding: UTF8}) => |
| 551 readAsString(encoding: encoding).then(const LineSplitter().convert); | 550 readAsString(encoding: encoding).then(const LineSplitter().convert); |
| 552 | 551 |
| 553 List<String> readAsLinesSync({Encoding encoding: UTF8}) => | 552 List<String> readAsLinesSync({Encoding encoding: UTF8}) => |
| 554 const LineSplitter().convert(readAsStringSync(encoding: encoding)); | 553 const LineSplitter().convert(readAsStringSync(encoding: encoding)); |
| 555 | 554 |
| 556 Future<File> writeAsBytes(List<int> bytes, | 555 Future<File> writeAsBytes(List<int> bytes, |
| 557 {FileMode mode: FileMode.WRITE, bool flush: false}) { | 556 {FileMode mode: FileMode.WRITE, bool flush: false}) { |
| 558 return open(mode: mode).then((file) { | 557 return open(mode: mode).then((file) async { |
|
floitsch
2017/04/27 22:10:25
The core libraries currently do not use 'async'. I
Bob Nystrom
2017/04/28 00:13:07
Took your change instead. I could have sworn I tri
| |
| 559 return file.writeFrom(bytes, 0, bytes.length).then((_) { | 558 try { |
| 560 if (flush) return file.flush().then((_) => this); | 559 await file.writeFrom(bytes, 0, bytes.length); |
| 561 return this; | 560 if (flush) await file.flush(); |
| 562 }).whenComplete(file.close); | 561 return this as File; |
| 562 } finally { | |
| 563 await file.close(); | |
| 564 } | |
| 563 }); | 565 }); |
| 564 } | 566 } |
| 565 | 567 |
| 566 void writeAsBytesSync(List<int> bytes, | 568 void writeAsBytesSync(List<int> bytes, |
| 567 {FileMode mode: FileMode.WRITE, bool flush: false}) { | 569 {FileMode mode: FileMode.WRITE, bool flush: false}) { |
| 568 RandomAccessFile opened = openSync(mode: mode); | 570 RandomAccessFile opened = openSync(mode: mode); |
| 569 try { | 571 try { |
| 570 opened.writeFromSync(bytes, 0, bytes.length); | 572 opened.writeFromSync(bytes, 0, bytes.length); |
| 571 if (flush) opened.flushSync(); | 573 if (flush) opened.flushSync(); |
| 572 } finally { | 574 } finally { |
| (...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1064 void _checkAvailable() { | 1066 void _checkAvailable() { |
| 1065 if (_asyncDispatched) { | 1067 if (_asyncDispatched) { |
| 1066 throw new FileSystemException( | 1068 throw new FileSystemException( |
| 1067 "An async operation is currently pending", path); | 1069 "An async operation is currently pending", path); |
| 1068 } | 1070 } |
| 1069 if (closed) { | 1071 if (closed) { |
| 1070 throw new FileSystemException("File closed", path); | 1072 throw new FileSystemException("File closed", path); |
| 1071 } | 1073 } |
| 1072 } | 1074 } |
| 1073 } | 1075 } |
| OLD | NEW |