Chromium Code Reviews| Index: pkg/front_end/lib/physical_file_system.dart |
| diff --git a/pkg/front_end/lib/physical_file_system.dart b/pkg/front_end/lib/physical_file_system.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..03a523fe6f9100a0fd5e543d063b127294a15079 |
| --- /dev/null |
| +++ b/pkg/front_end/lib/physical_file_system.dart |
| @@ -0,0 +1,57 @@ |
| +// Copyright (c) 2016, 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. |
| + |
| +library front_end.physical_file_system; |
| + |
| +import 'dart:async'; |
| +import 'dart:io' as io; |
| + |
| +import 'package:path/path.dart' as p; |
| + |
| +import 'file_system.dart'; |
| + |
| +/// Concrete implementation of [FileSystem] which performs its operations using |
| +/// I/O. |
| +/// |
| +/// Not intended to be implemented or extended by clients. |
| +class PhysicalFileSystem implements FileSystem { |
| + static PhysicalFileSystem instance = new PhysicalFileSystem._(); |
|
scheglov
2016/11/03 02:15:24
+final?
Paul Berry
2016/11/03 15:16:41
Done. Thank you.
|
| + |
| + PhysicalFileSystem._(); |
| + |
| + @override |
| + p.Context get context => p.context; |
| + |
| + @override |
| + FileSystemEntity entityForPath(String path) => |
| + new _PhysicalFileSystemEntity(context.normalize(context.absolute(path))); |
| + |
| + @override |
| + FileSystemEntity entityForUri(Uri uri) { |
| + if (uri.scheme != 'file') throw new ArgumentError('File URI expected'); |
| + return entityForPath(context.fromUri(uri)); |
| + } |
| +} |
| + |
| +/// Concrete implementation of [FileSystemEntity] for use by |
| +/// [PhysicalFileSystem]. |
| +class _PhysicalFileSystemEntity implements FileSystemEntity { |
| + @override |
| + final String path; |
| + |
| + _PhysicalFileSystemEntity(this.path); |
| + |
| + @override |
| + int get hashCode => path.hashCode; |
| + |
| + @override |
| + bool operator ==(Object other) => |
| + other is _PhysicalFileSystemEntity && other.path == path; |
| + |
| + @override |
| + Future<List<int>> readAsBytes() => new io.File(path).readAsBytes(); |
| + |
| + @override |
| + Future<String> readAsString() => new io.File(path).readAsString(); |
| +} |