使用readAsString()读取文本文件并使用结果

时间:2013-05-13 22:38:35

标签: dart dart-io

以下示例(1)读取文件并打印内容,而不将文件内容明确地分配给变量(即“.then(stdout.write)”)。但是,如果我想做的不仅仅是打印内容(2),我需要将内容分配给变量(我认为)。

是否可以实现(打印内容并执行更多操作),而无需将文件文本分配给变量?

在第一个例子中,是否创建了隐式变量?或者换句话说,example1是否通过不创建显式变量来使用更少的资源?

//Example 1:
import 'dart:io';
void main() {
  new File(new Options().script)
    .readAsString(encoding: Encoding.ASCII)
    .then(stdout.write)
    .catchError((oError) => print(oError));
  print("Reading file ...\n");
}

//Example 2:
import 'dart:io';
void main() {
  new File(new Options().script)
    .readAsString(encoding: Encoding.ASCII)
    .then((String sText) {
      stdout.write(sText+"\n\n");
      print ('Completed');
    })
    .catchError((oError) => print(oError));
  print("Reading file ...\n");
}

1 个答案:

答案 0 :(得分:1)

在第一个例子中,这个:

.then(stdout.write)

相当于:

.then((String sText) {
  stdout.write(sText);
})

从技术上讲,还有一个函数调用,你还有一个变量,它应该花费你几个字节(我不确定具体的实现)。字符串是不可改变的;您只接收对String的引用,因此您不使用第二个版本保存资源(除了函数调用和几个字节的内存)。

无论你想要对String的内容做什么,当然可能会涉及使用资源,但这不应该是一个问题,除非文件很大。