bugfix> dart > 投稿

Windowsでdartを使用してディレクトリリストを作成しようとしていますが、エラーが発生します

ここに私のコードがあります

void listerine(Directory pat){
  //Directory root = new Directory(pat);
  //var root = Directory.systemTemp;
  pat.list(recursive: true, followLinks: false).listen((FileSystemEntity entity){
main(List<String> arguments){
  var root = new Directory("C:\\");
  print(root);
  listerine(root);
}

ところで、私はアンドロイドスタジオをIDEとして使用しています。

このエラーが表示されます。

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)

回答 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の修正バージョンを使用し、htmlサポートをモバイルレンダリングエンジン(skia)に置き換えます。

    Dartコードの大部分は両方のバージョンで実行できますが、すべてではありません。これは、Dart VMアプリケーションとFlutterアプリケーションでパッケージを再利用できることを意味しますが、すべてではありません。特に、ブラウザまたはプラットフォームとの対話は、それぞれのバージョンでのみ利用可能です。

    Windowsファイルシステムと対話するには、Dart VMバージョンが必要です。これを個別にダウンロードしてください。 Günterが言うように、Flutterのモバイルファイルシステムと対話するには、path_providerを使用します。

あなたの答え