| [](https://github.com/dart-lang/tools/actions/workflows/file.yml) | |
| [](https://pub.dev/packages/file) | |
| [](https://pub.dev/packages/file/publisher) | |
| A generic file system abstraction for Dart. | |
| ## Features | |
| Like `dart:io`, `package:file` supplies a rich Dart-idiomatic API for accessing | |
| a file system. | |
| Unlike `dart:io`, `package:file`: | |
| - Can be used to implement custom file systems. | |
| - Comes with an in-memory implementation out-of-the-box, making it super-easy to | |
| test code that works with the file system. | |
| - Allows using multiple file systems simultaneously. A file system is a | |
| first-class object. Instantiate however many you want and use them all. | |
| ## Usage | |
| Implement your own custom file system: | |
| ```dart | |
| import 'package:file/file.dart'; | |
| class FooBarFileSystem implements FileSystem { ... } | |
| ``` | |
| Use the in-memory file system: | |
| ```dart | |
| import 'package:file/memory.dart'; | |
| var fs = MemoryFileSystem(); | |
| ``` | |
| Use the local file system (requires dart:io access): | |
| ```dart | |
| import 'package:file/local.dart'; | |
| var fs = const LocalFileSystem(); | |
| ``` |