I am trying to use dart-io to read and write file. I am getting below exception.
Uncaught Error: Unsupported operation: _Namespace
at Object.dart.throw (dart_sdk.js:4537)
at Function.get _namespacePointer [as _namespacePointer] (dart_sdk.js:49364)
at Function._namespacePointer (dart_sdk.js:47224)
at Function._dispatchWithNamespace (dart_sdk.js:47227)
at io._File.new.open (dart_sdk.js:47342)
at new io._FileStreamConsumer.new (dart_sdk.js:47186)
at io._File.new.openWrite (dart_sdk.js:47468)
at refresh (main.dart:15)
at refresh.next (<anonymous>)
at runBody (dart_sdk.js:22264)
at Object.async.async (dart_sdk.js:22292)
at main.refresh (main.dart:13)
at Object.dart._checkAndCall (dart_sdk.js:4731)
at Object.dart.dcall (dart_sdk.js:4736)
Run Code Online (Sandbox Code Playgroud)
我使用的代码最终输出 = io.File('output.txt').openWrite(); output.write(output_data);
Could you please help me in fixing it.
Or …Run Code Online (Sandbox Code Playgroud) 这个问题是上一个问题的延续。我编写了以下代码来确定是否File.openRead()创建了可以逐行流式传输的 Stream。事实证明答案是否定的。读取整个文件,然后传递到下一个转换。我的问题是:如何在 Dart 中逐行流式传输文件?
import 'dart:async';
import 'dart:convert';
import 'dart:io';
void main(List<String> arguments) {
Stream<List<int>> stream = new File('Data.txt').openRead();
stream
.transform(const Utf8InterceptDecoder())
.transform(const LineSplitterIntercept())
.listen((line) {
// stdout.writeln(line);
}).asFuture().catchError((_) => print(_));
}
int lineSplitCount = 0;
class LineSplitterIntercept extends LineSplitter {
const LineSplitterIntercept() : super();
// Never gets called
List<String> convert(String data) {
stdout.writeln("LineSplitterIntercept.convert : Data:" + data);
return super.convert(data);
}
StringConversionSink startChunkedConversion(ChunkedConversionSink<String> sink) {
stdout.writeln("LineSplitterIntercept.startChunkedConversion Count:"+lineSplitCount.toString()+ " Sink: " + sink.toString());
lineSplitCount++;
return super.startChunkedConversion(sink);
}
} …Run Code Online (Sandbox Code Playgroud)