[![package:file](https://github.com/dart-lang/tools/actions/workflows/file.yml/badge.svg)](https://github.com/dart-lang/tools/actions/workflows/file.yml)
[![pub package](https://img.shields.io/pub/v/file.svg)](https://pub.dev/packages/file)
[![package publisher](https://img.shields.io/pub/publisher/file.svg)](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();
```
