file 5.1.0
File #
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:
import 'package:file/file.dart';
class FooBarFileSystem implements FileSystem { ... }
Use the in-memory file system:
import 'package:file/memory.dart';
var fs = MemoryFileSystem();
Use the local file system (requires dart:io access):
import 'package:file/local.dart';
var fs = const LocalFileSystem();
5.1.0 #
- Added a new
MemoryFileSystem
constructor to use a test clock
5.0.10 #
- Added example
5.0.9 #
- Fix lints for project health
5.0.8 #
- Return Uint8List rather than List
5.0.7 #
- Dart 2 fixes for
RecordingProxyMixin
andReplayProxyMixin
.
5.0.6 #
- Dart 2 fixes for
RecordingFile.open()
5.0.5 #
- Dart 2 fixes
5.0.4 #
- Update SDK constraint to 2.0.0-dev.67.0, remove workaround in recording_proxy_mixin.dart.
- Fix usage within Dart 2 runtime mode in Dart 2.0.0-dev.61.0 and later.
- Relax constraints on
package:test
5.0.3 #
- Update
package:test
dependency to 1.0
5.0.2 #
- Declare compatibility with Dart 2 stable
5.0.1 #
- Remove upper case constants
- Update SDK constraint to 2.0.0-dev.54.0.
5.0.0 #
- Moved
testing
library into a dedicatedpackage:file_testing
so that libraries don't need to take on a transitive dependency onpackage:test
in order to usepackage:file
.
4.0.1 #
- General library cleanup
- Add
style
support inMemoryFileSystem
, so that callers can choose to have a memory file system with windows-like paths. [#68] (https://github.com/google/file.dart/issues/68)
4.0.0 #
- Change method signature for
RecordingRandomAccessFile._close
to return aFuture<void>
instead ofFuture<RandomAccessFile>
. This follows a change in dart:io, Dart SDK2.0.0-dev.40
.
3.0.0 #
- Import
dart:io
unconditionally. More recent Dart SDK revisions allowdart:io
to be imported in a browser context, though if methods are actually invoked, they will fail. This matches well withpackage:file
, where users can use thememory
library and get in-memory implementations of thedart:io
interfaces. - Bump minimum Dart SDK to
1.24.0
2.3.7 #
- Fix Dart 2 error.
2.3.6 #
- Relax sdk upper bound constraint to '<2.0.0' to allow 'edge' dart sdk use.
2.3.5 #
- Fix internal use of a cast which fails on Dart 2.0 .
2.3.4 #
- Bumped maximum Dart SDK version to 2.0.0-dev.infinity
2.3.3 #
- Relaxes version requirements on
package:intl
2.3.2 #
- Fixed
FileSystem.directory(Uri)
,FileSystem.file(Uri)
, andFileSystem.link(Uri)
to consult the file system's path context when converting the URI to a file path rather than usingUri.toFilePath()
.
2.3.1 #
- Fixed
MemoryFileSystem
to makeFile.writeAs...()
update the last modified time of the file.
2.3.0 #
- Added the following convenience methods in
Directory
:Directory.childDirectory(String basename)
Directory.childFile(String basename)
Directory.childLink(String basename)
2.2.0 #
- Added
ErrorCodes
class, which holds errno values.
2.1.0 #
- Add support for new
dart:io
API methods added in Dart SDK 1.23
2.0.1 #
- Minor doc updates
2.0.0 #
- Improved
toString
implementations in file system entity classes - Added
ForwardingFileSystem
and associated forwarding classes to the mainfile
library - Removed
FileSystem.pathSeparator
, and added a more comprehensiveFileSystem.path
property - Added
FileSystemEntity.basename
andFileSystemEntity.dirname
- Added the
record_replay
library - Added the
testing
library
1.0.1 #
- Added
FileSystem.systemTempDirectory
- Added the ability to pass
Uri
andFileSystemEntity
types toFileSystem.directory()
,FileSystem.file()
, andFileSystem.link()
- Added
FileSystem.pathSeparator
1.0.0 #
- Unified interface to match dart:io API
- Local file system implementation
- In-memory file system implementation
- Chroot file system implementation
0.1.0 #
- Initial version
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:file/file.dart';
import 'package:file/memory.dart';
Future<void> main() async {
final FileSystem fs = MemoryFileSystem();
final Directory tmp = await fs.systemTempDirectory.createTemp('example_');
final File outputFile = tmp.childFile('output');
await outputFile.writeAsString('Hello world!');
print(outputFile.readAsStringSync());
}
Use this package as a library
1. Depend on it
Add this to your package's pubspec.yaml file:
dependencies:
file: ^5.1.0
2. Install it
You can install packages from the command line:
with pub:
$ pub get
with Flutter:
$ flutter pub get
Alternatively, your editor might support pub get
or flutter pub get
.
Check the docs for your editor to learn more.
3. Import it
Now in your Dart code, you can use:
import 'package:file/file.dart';
Popularity:
Describes how popular the package is relative to other packages.
[more]
|
98
|
Health:
Code health derived from static analysis.
[more]
|
100
|
Maintenance:
Reflects how tidy and up-to-date the package is.
[more]
|
100
|
Overall:
Weighted score of the above.
[more]
|
99
|
Learn more about scoring.
We analyzed this package on Dec 10, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
- Dart: 2.7.0
- pana: 0.13.1+4
Dependencies
Package | Constraint | Resolved | Available |
---|---|---|---|
Direct dependencies | |||
Dart SDK | >=2.2.2 <3.0.0 | ||
intl | >=0.14.0 <1.0.0 | 0.16.0 | |
meta | ^1.1.2 | 1.1.8 | |
path | ^1.5.1 | 1.6.4 | |
Dev dependencies | |||
file_testing | >=2.0.0 <3.0.0 | ||
test | >=1.0.0 <2.0.0 |