使用dart:io库读取dart 2中的文件

时间:2018-10-10 12:32:59

标签: angular file io dart angular-dart

我是飞镖语言的新手。

我想使用库dart:io读取文件(test.txt)。我第一次尝试基于此链接: https://v1-dartlang-org.firebaseapp.com/dart-vm/io-library-tour

但是经过那些尝试,尝试读取文件时仍然出现错误,我什么都没找到,所以我在这里问,有没有人有任何解决方案或想法,可能是什么问题? / p>

这是我尝试读取的代码和文件(以UTF-8编码)。

configReader.dart

import 'dart:io';
import 'dart:convert';

class ConfigReader{

  ConfigReader(){
    var configFile = new File("test.txt");
    var text;
    configFile.readAsLines(encoding : Encoding.getByName("utf-8"));
  }

}

test.txt

line1
line2
line3
line4

我遇到的错误:

  

例外:不支持的操作:_Namespace STACKTRACE:   dart:sdk_internal
  readAsLines软件包:insightos / src / utils / init / configReader.dart 11:15
  新软件包:insightos / src / utils / init / utils.dart 35:5
  getHost软件包:insightos / src / utils / init / utils.dart 72:13
  getSandayaNewEndpointService   包裹:insightos / src / utils / linker / query_factory.dart 52:21   loadClientConfiguration dart:sdk_internal
  异步包:insightos / src / utils / linker / query_factory.dart 51:70   loadClientConfiguration   软件包:insightos / src / utils / init / authenticator.dart 85:65 initApp   dart:sdk_internal异步   软件包:insightos / src / utils / init / authenticator.dart 83:44 initApp   软件包:insightos / src / utils / init / authenticator.dart 66:7
  initAuthentication包:stack_trace
  arg包:angular / src / core / zone / ng_zone.dart 190:16 arg   dart:sdk_internal runUnary   封装:angular / src / core / zone / ng_zone.dart 187:18
  [_runUnary] dart:sdk_internal
  .scheduleMicrotask.dart.fn   封装:angular / src / core / zone / ng_zone.dart 163:9
  safeMicrotask包:stack_trace
  parent.registerCallback.dart.fn   封装:angular / src / core / zone / ng_zone.dart 178:16
  parent.run.dart.fn dart:sdk_internal
  运行package:angular / src / core / zone / ng_zone.dart 175:18
  [_run]

     

package:insightos / src / utils / linker / query_factory.dart 51:70   loadClientConfiguration   软件包:insightos / src / utils / init / authenticator.dart 85:65 initApp   dart:sdk_internal异步   软件包:insightos / src / utils / init / authenticator.dart 83:44 initApp   软件包:insightos / src / utils / init / authenticator.dart 66:7
  initAuthentication包:stack_trace
  arg包:angular / src / core / zone / ng_zone.dart 190:16 arg   dart:sdk_internal runUnary   封装:angular / src / core / zone / ng_zone.dart 187:18
  [_runUnary] dart:sdk_internal
  .scheduleMicrotask.dart.fn   封装:angular / src / core / zone / ng_zone.dart 163:9
  safeMicrotask包:stack_trace
  parent.registerCallback.dart.fn   封装:angular / src / core / zone / ng_zone.dart 178:16
  parent.run.dart.fn dart:sdk_internal
  运行package:angular / src / core / zone / ng_zone.dart 175:18
  [_run]

     

dart:sdk_internal
  异步包:insightos / src / utils / init / authenticator.dart 61:40
  initAuthentication软件包:insightos / src / utils / init / authenticator.dart   58:5 ngOnInit   包裹:insightos / src / components / app_bar / app_bar.template.dart 471:25   detectChanges内部包:角/源/核心/链接器/ app_view.dart   398:7 detectChanges   软件包:insightos / src / utils / app / insightOS.template.dart 366:16
  detectChanges内部包:角/源/核心/链接器/ app_view.dart   398:7 detectChanges   包:insightos / src / utils / app / insightOS.template.dart 413:16
  detectChanges内部包:角/源/核心/链接器/ app_view.dart   398:7 detectChanges   封装:angular / src / core / linker / view_ref.dart 106:12
  detectChanges包:角度/源/核心/change_detection/host.dart   168:18 [_runTick]   封装:angular / src / core / change_detection / host.dart 144:15
  勾号包:角/源/核心/ application_ref.dart 108:5   [_loadedRootComponent]软件包:angular / src / core / application_ref.dart   96:27
  src__runtime__optimizations.unsafeCast.run.dart.fn   软件包:angular / src / core / change_detection / host.dart 250:18
  runInZone.dart.fn软件包:angular / src / core / zone / ng_zone.dart 178:16
  parent.run.dart.fn dart:sdk_internal
  运行package:angular / src / core / zone / ng_zone.dart 175:18
  [_run] dart:sdk_internal
  运行package:angular / src / core / zone / ng_zone.dart 327:22
  运行package:angular / src / core / application_ref.dart 140:51
  runInZone软件包:angular / src / core / change_detection / host.dart 248:5
  运行package:angular / src / core / application_ref.dart 69:23
  引导程序包:Angular / src / bootstrap / run.dart 188:16
  runApp main.dart 8:3
  main main.dart.bootstrap.js 788:12
  

1 个答案:

答案 0 :(得分:0)

Flutter 网页不支持 dart:io。相反,您需要 dart:html

解决方案

readFile(String path) async{
    var request = await HttpRequest.request(path);
    var response = request.response;
    
    return response;
}

出于上下文的考虑,我用它来读取 .svg 文件作为字符串。为了您的使用,您需要像这样修改方法:

readFile(String path) async{
    var request = await HttpRequest.request(path);
    var response = request.response;
    var lines = LineSplitter.split(response);

    //lines is an SyncIterable<String> but can be converted to a List<String>
    return lines;
}