Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 class _FileInputStream extends _BaseDataInputStream implements InputStream { | 5 class _FileInputStream extends _BaseDataInputStream implements InputStream { |
| 6 _FileInputStream(String name) | 6 _FileInputStream(String name) |
| 7 : _data = const [], | 7 : _data = const [], |
| 8 _position = 0, | 8 _position = 0, |
| 9 _filePosition = 0 { | 9 _filePosition = 0 { |
| 10 var file = new File(name); | 10 var file = new File(name); |
| (...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 653 }); | 653 }); |
| 654 } | 654 } |
| 655 | 655 |
| 656 List<String> readAsLinesSync([Encoding encoding = Encoding.UTF_8]) { | 656 List<String> readAsLinesSync([Encoding encoding = Encoding.UTF_8]) { |
| 657 var decoder = _StringDecoders.decoder(encoding); | 657 var decoder = _StringDecoders.decoder(encoding); |
| 658 List<int> bytes = readAsBytesSync(); | 658 List<int> bytes = readAsBytesSync(); |
| 659 decoder.write(bytes); | 659 decoder.write(bytes); |
| 660 return _getDecodedLines(decoder); | 660 return _getDecodedLines(decoder); |
| 661 } | 661 } |
| 662 | 662 |
| 663 Future<File> writeAsBytes(List<int> bytes, | |
| 664 [FileMode mode = FileMode.WRITE]) { | |
| 665 Completer<File> completer = new Completer<File>(); | |
| 666 try { | |
| 667 var stream = openOutputStream(mode); | |
| 668 stream.write(bytes); | |
|
Søren Gjesse
2012/11/20 13:23:34
You could just do stream.close() right after strea
| |
| 669 stream.onNoPendingWrites = () { | |
| 670 stream.close(); | |
| 671 stream.onClosed = () { | |
| 672 completer.complete(this); | |
| 673 }; | |
| 674 }; | |
| 675 stream.onError = (e) { | |
| 676 completer.completeException(e); | |
| 677 }; | |
| 678 } catch (e) { | |
| 679 new Timer(0, (t) => completer.completeException(e)); | |
| 680 return completer.future; | |
| 681 } | |
| 682 return completer.future; | |
| 683 } | |
| 684 | |
| 685 void writeAsBytesSync(List<int> bytes, [FileMode mode = FileMode.WRITE]) { | |
| 686 RandomAccessFile opened = openSync(mode); | |
| 687 opened.writeListSync(bytes, 0, bytes.length); | |
| 688 opened.closeSync(); | |
| 689 } | |
| 690 | |
| 691 Future<File> writeAsString(String contents, | |
| 692 [FileMode mode = FileMode.WRITE, | |
| 693 Encoding encoding = Encoding.UTF_8]) { | |
| 694 try { | |
| 695 var data = _StringEncoders.encoder(encoding).encodeString(contents); | |
| 696 return writeAsBytes(data, mode); | |
| 697 } catch (e) { | |
| 698 var completer = new Completer(); | |
| 699 new Timer(0, (t) => completer.completeException(e)); | |
| 700 return completer.future; | |
| 701 } | |
| 702 } | |
| 703 | |
| 704 void writeAsStringSync(String contents, | |
| 705 [FileMode mode = FileMode.WRITE, | |
| 706 Encoding encoding = Encoding.UTF_8]) { | |
| 707 var data = _StringEncoders.encoder(encoding).encodeString(contents); | |
| 708 writeAsBytesSync(data, mode); | |
| 709 } | |
| 710 | |
| 663 String get name => _name; | 711 String get name => _name; |
| 664 | 712 |
| 665 void _ensureFileService() { | 713 void _ensureFileService() { |
| 666 if (_fileService == null) { | 714 if (_fileService == null) { |
| 667 _fileService = _FileUtils._newServicePort(); | 715 _fileService = _FileUtils._newServicePort(); |
| 668 } | 716 } |
| 669 } | 717 } |
| 670 | 718 |
| 671 static throwIfError(Object result, String msg) { | 719 static throwIfError(Object result, String msg) { |
| 672 if (result is OSError) { | 720 if (result is OSError) { |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1080 new FileIOException("File closed '$_name'")); | 1128 new FileIOException("File closed '$_name'")); |
| 1081 }); | 1129 }); |
| 1082 return completer.future; | 1130 return completer.future; |
| 1083 } | 1131 } |
| 1084 | 1132 |
| 1085 final String _name; | 1133 final String _name; |
| 1086 int _id; | 1134 int _id; |
| 1087 | 1135 |
| 1088 SendPort _fileService; | 1136 SendPort _fileService; |
| 1089 } | 1137 } |
| OLD | NEW |