【问题标题】:How to open a file using its absolute path?如何使用绝对路径打开文件?
【发布时间】:2021-05-31 18:13:56
【问题描述】:

如何使用绝对路径打开文件?

await File('c:/Users/rozerro/AndroidStudioProjects/rxdart_streams/assets/sonet.txt')
            .openRead()
            .transform(utf8.decoder)
            .transform(LineSplitter())
            .toList();

还有

c:\\Users\\rozerro\\AndroidStudioProjects\\rxdart_streams\\assets\\sonet.txt

错误

E/flutter (4943): [错误:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:FileSystemException:无法打开文件,路径 = 'c:/Users/rozerro/AndroidStudioProjects/rxdart_streams/assets/sonet.txt' (操作系统错误:没有这样的文件或目录,errno = 2)

【问题讨论】:

  • 您可以将您的路径粘贴到资源管理器窗口中并打开文件吗?你怎么知道路径是正确的?此外,您标记了这个飞镖。它是 Windows 上的纯 dart,还是模拟设备上的 Flutter?
  • @nvoigt 它在颤抖。此路径在 Windows 中是正确的 C:\Users\rozerro\AndroidStudioProjects\rxdart_streams\assets\sonet.txt
  • 那么...是 Flutter on a Device 还是 Flutter for Windows Desktop?

标签: flutter dart


【解决方案1】:

你不能那样做。您无法通过智能手机上部署的应用访问本地 PC 上的文件。

由于您的文本文件位于名为 assets 的文件夹中,因此我假设它是您希望与应用程序一起部署的某种文件。在颤振中,这被称为“资产”,您可以在 documentation about assets and images 中了解如何实现这一目标。

简而言之,您的 pubspec.yaml 文件需要有一个条目:

flutter:
  assets:
    - assets/sonet.txt

然后你就可以用这个方法在你的源码中访问它了:

final textFromFile = await rootBundle.loadString('assets/sonet.txt');

【讨论】:

  • 其实应用是在模拟器上运行的
  • 好吧,如果模拟器好的话,它会模拟智能手机无法做到这一点的事实。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
相关资源
最近更新 更多