我正在尝试使用dart在Windows上创建目录列表,但是我收到错误
这是我的代码
I/flutter ( 7224): Directory: 'C:\'
E/flutter ( 7224): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter ( 7224): FileSystemException: Directory listing failed, path = 'C:\/' (OS Error: No such file or directory, errno = 2)
E/flutter ( 7224): #0 _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:1114:29)
E/flutter ( 7224): #1 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter ( 7224): #2 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
顺便说一下,我使用android studio作为IDE。
我给了我这个错误。
d = {'A': [{'B': [{'C': [{'D1':'xyz'}, {'D2': []}]}]}]}
l = ['A','B','C','D1']
output = []
def find_path(dict_obj,key=0):
for k,v in dict_obj.items():
if k == l[key]:
if key == len(l)-1:
output.append(v)
return
if isinstance(v,dict):
find_path(v, key+1)
elif isinstance(v,list):
for i,item in enumerate(v):
if isinstance(item,dict):
find_path(item,key+1)
find_path(d)
print(output[0] if output else None)
答案 0 :(得分:1)
您的问题标记为flutter
,但您似乎在询问纯Dart计划?
此代码
import 'dart:io';
void listerine(Directory pat) async {
await for (var v in pat.list()) {
print(v);
}
}
main() {
listerine(new Directory("C:\\"));
}
产生你在Windows上所期望的,即
Directory: 'C:\$Recycle.Bin'
Directory: 'C:\$WINDOWS.~BT'
Directory: 'C:\Apps'
...
Flutter使用Dart SDK的修改版本替换了移动呈现引擎(skia)的html支持。
大多数Dart代码都可以在两个版本中运行,但不是全部。这意味着您可以在Dart VM应用程序和Flutter应用程序中重用包 - 但不是全部。特别是,与浏览器或平台的交互仅在各自的版本中可用。
要与Windows文件系统交互,您需要Dart VM版本。 Download这个单独的。正如Günter所说,要在Flutter中与移动文件系统进行交互,请使用path_provider。