| Index: runtime/bin/file_impl.dart
|
| diff --git a/runtime/bin/file_impl.dart b/runtime/bin/file_impl.dart
|
| index 8ab5bbbf29afdd5e61c5212dd2c4bdf2f46cc393..2ecd0b115da2a377e330aba4eaf7e733d5e0c082 100644
|
| --- a/runtime/bin/file_impl.dart
|
| +++ b/runtime/bin/file_impl.dart
|
| @@ -91,7 +91,7 @@ class _FileInputStream extends _BaseDataInputStream implements InputStream {
|
| }
|
|
|
|
|
| -class _FileOutputStream implements OutputStream {
|
| +class _FileOutputStream extends _BaseOutputStream implements OutputStream {
|
| _FileOutputStream(String name, FileMode mode) {
|
| _pendingOperations = new List<List<int>>();
|
| var f = new File(name);
|
| @@ -549,20 +549,9 @@ class _File implements File {
|
| return result;
|
| }
|
|
|
| - _StringDecoder _getDecoder(encoding) {
|
| - if (encoding == "UTF-8") {
|
| - return new _UTF8Decoder();
|
| - } else if (encoding == "ISO-8859-1") {
|
| - return new _Latin1Decoder();
|
| - } else if (encoding == "ASCII") {
|
| - return new _AsciiDecoder();
|
| - }
|
| - throw new FileIOException("Unsupported encoding $_encoding");
|
| - }
|
| -
|
| - void readAsText(String encoding, void callback(String text)) {
|
| + void readAsText(Encoding encoding, void callback(String text)) {
|
| _asyncUsed = true;
|
| - var decoder = _getDecoder(encoding);
|
| + var decoder = _StringDecoders.decoder(encoding);
|
| readAsBytes((bytes) {
|
| try {
|
| decoder.write(bytes);
|
| @@ -576,12 +565,12 @@ class _File implements File {
|
| });
|
| }
|
|
|
| - String readAsTextSync([String encoding = 'UTF-8']) {
|
| + String readAsTextSync([Encoding encoding = Encoding.UTF_8]) {
|
| if (_asyncUsed) {
|
| throw new FileIOException(
|
| "Mixed use of synchronous and asynchronous API");
|
| }
|
| - var decoder = _getDecoder(encoding);
|
| + var decoder = _StringDecoders.decoder(encoding);
|
| List<int> bytes = readAsBytesSync();
|
| decoder.write(bytes);
|
| return decoder.decoded;
|
| @@ -603,9 +592,9 @@ class _File implements File {
|
| return result;
|
| }
|
|
|
| - void readAsLines(String encoding, void callback(List<String> lines)) {
|
| + void readAsLines(Encoding encoding, void callback(List<String> lines)) {
|
| _asyncUsed = true;
|
| - var decoder = _getDecoder(encoding);
|
| + var decoder = _StringDecoders.decoder(encoding);
|
| readAsBytes((bytes) {
|
| try {
|
| decoder.write(bytes);
|
| @@ -619,12 +608,12 @@ class _File implements File {
|
| });
|
| }
|
|
|
| - List<String> readAsLinesSync([String encoding = "UTF-8"]) {
|
| + List<String> readAsLinesSync([Encoding encoding = Encoding.UTF_8]) {
|
| if (_asyncUsed) {
|
| throw new FileIOException(
|
| "Mixed use of synchronous and asynchronous API");
|
| }
|
| - var decoder = _getDecoder(encoding);
|
| + var decoder = _StringDecoders.decoder(encoding);
|
| List<int> bytes = readAsBytesSync();
|
| decoder.write(bytes);
|
| return _getDecodedLines(decoder);
|
| @@ -849,7 +838,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
| return result;
|
| }
|
|
|
| - void writeString(String string) {
|
| + void writeString(String string, [Encoding encoding = Encoding.UTF_8]) {
|
| _ensureFileService();
|
| _asyncUsed = true;
|
| List request = new List(3);
|
| @@ -865,7 +854,7 @@ class _RandomAccessFile implements RandomAccessFile {
|
| });
|
| }
|
|
|
| - int writeStringSync(String string) {
|
| + int writeStringSync(String string, [Encoding encoding = Encoding.UTF_8]) {
|
| if (_asyncUsed) {
|
| throw new FileIOException(
|
| "Mixed use of synchronous and asynchronous API");
|
|
|