操作系统错误:没有这样的文件或目录,errno = 2
Posted
技术标签:
【中文标题】操作系统错误:没有这样的文件或目录,errno = 2【英文标题】:OS Error: No such file or directory, errno = 2 【发布时间】:2020-01-13 00:11:06 【问题描述】:我无法加载存储在我的资产文件夹中的 html 文件。我已经搜索了 2 天,但我似乎无法找出原因。
我已确保将它也包含在 pubspec.yaml 中,并带有适当的缩进和所有 - 构建良好。我在 pubspec.yaml 中加载的图像资产加载没有问题,所以我知道这部分应该没问题。
我还尝试使用 .txt 文件按照此处的确切示例代码对其进行测试:https://api.flutter.dev/flutter/dart-io/File-class.html - 来自“从文件中读取”作为流部分。它给出了同样的错误。
这就是我想要做的:
// Tried this with a test .txt file too ('assets/html/test.txt')
File file = new File('assets/html/emaiL_bank.html');
Stream<List<int>> inputStream = file.openRead();
inputStream
.transform(utf8.decoder)
.transform(new LineSplitter())
.forEach((l) => print('testing Print: $l'));
这是我的 pubspec.yaml 的一部分:
flutter:
assets:
- assets/images/ic_splashscreen.jpg
- assets/images/at.png
- assets/images/lock.png
- assets/html/emaiL.html
- assets/html/emaiL_bank.html
- assets/html/test.txt
..我得到 当它试图做 file.openRead()
试过flutter clean、重启IDE、重建——似乎没有任何效果。
任何帮助/线索将不胜感激。
【问题讨论】:
看看这个问题***.com/q/50903106/8745788对你有没有帮助 不幸的是没有帮助:( 【参考方案1】:请使用 rootBundle 加载资源 https://flutter.dev/docs/development/ui/assets-and-images
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async
return await rootBundle.loadString('assets/config.json');
如果您正在尝试为 webview 加载 html 文件,请参考此https://inducesmile.com/google-flutter/how-load-a-local-html-file-in-flutter-webview/
Future<String> _loadLocalHTML() async
return await rootBundle.loadString('assets/html_code.html');
参考文档中的代码
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'dart:async';
class LoadHTMLFileToWEbView extends StatefulWidget
@override
_LoadHTMLFileToWEbViewState createState() => _LoadHTMLFileToWEbViewState();
class _LoadHTMLFileToWEbViewState extends State<LoadHTMLFileToWEbView>
@override
Widget build(BuildContext context)
return FutureBuilder<String>(
future: _loadLocalHTML(),
builder: (context, snapshot)
if (snapshot.hasData)
return WebviewScaffold(
appBar: AppBar(title: Text("Load HTM file in WebView")),
withjavascript: true,
appCacheEnabled: true,
url: new Uri.dataFromString(snapshot.data, mimeType: 'text/html')
.toString(),
);
else if (snapshot.hasError)
return Scaffold(
body: Center(
child: Text("$snapshot.error"),
),
);
return Scaffold(
body: Center(child: CircularProgressIndicator()),
);
,
);
Future<String> _loadLocalHTML() async
return await rootBundle.loadString('assets/html_code.html');
【讨论】:
谢谢。这似乎有效。顺便说一句,我不想将它加载到 webview 中。我正在尝试将其作为字符串读取,然后需要对其进行处理并发送到 API。另外,出于好奇。为什么必须使用 rootBundle 从资产加载?通过 File 类可以加载什么样的路径? 完整路径类似于 /scard/0/your_andorid_dir/your_asset_file。不可能知道每种 android 类型的正确完整路径。 我明白了。谢谢你的帮助,好心的先生。以上是关于操作系统错误:没有这样的文件或目录,errno = 2的主要内容,如果未能解决你的问题,请参考以下文章
气流 SSH 操作错误:[Errno 2] 没有这样的文件或目录:
FileSystemException:无法打开文件,路径 = '/storage/0/emulated/myfolder/myfile.txt'(操作系统错误:没有这样的文件或目录,errno =
Python IOError 中的错误:[Errno 2] 没有这样的文件或目录:'data.csv' [重复]
docker-compose 错误:FileNotFoundError:[Errno 2] 没有这样的文件或目录
pip install dryscrape 失败并显示“错误:[Errno 2] 没有这样的文件或目录:'src/webkit_server'”?