使用Flutter'file',在lib目录中读取txt文件的正确路径是什么?

时间:2019-04-27 04:07:41

标签: android flutter

我正在使用颤动的“文件”,试图读取lib目录中的txt文件,但是我不知道应该如何编写代码来读取该文件。我也不知道是否将txt文件放在正确的位置,这意味着我不知道我是否可以读取lib目录中的文件。

我已经将txt文件words.txt放在了放置其他dart文件的lib目录中。

下面是我的代码,试图读取'word.txt'文件:

Future<String> readFile() async {
  var text;
  try {
    final directory = await getApplicationDocumentsDirectory();
    print(directory.path);

    final file = File('${directory.path}/lib/words.txt');
    text = await file.readAsString();
    return text;
  } catch (e) {
    print(e.message);
  }
}

P.S。我已经导入了“ dart:io”和“ path_provider.dart”。

运行程序时,我可以看到目录。路径已打印在控制台中,但是e.message'无法打开文件'已打印在控制台中。

我认为该错误来自'File('$ {directory.path} /lib/words.txt')',因此我想知道如何编写代码以读取lib目录中的txt文件

谢谢。

1 个答案:

答案 0 :(得分:1)

在项目的根文件夹中创建一个资产文件夹。在Android Studio中,您可以右键单击“项目”大纲,然后转到New > Directory

所以现在你应该拥有

root folder
  --android
  --ios
  --lib
  --assets
  --build

将文本文件添加到新文件夹

您可以仅将文本文件复制到资产目录。例如,words.txt的相对路径为assets/words.txt

打开项目根目录中的pubspec.yaml文件。 更新为

flutter:
  assets:
    - assets/words.txt

import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;

Future<String> loadAsset() async {
  var s =  await rootBundle.loadString('assets/my_text.txt');
  print(s);//for debug
  return s;
}