OLD | NEW |
---|---|
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart.io; | 5 part of dart.io; |
6 | 6 |
7 class FileSystemEntityType { | 7 class FileSystemEntityType { |
8 static const FILE = const FileSystemEntityType._internal(0); | 8 static const FILE = const FileSystemEntityType._internal(0); |
9 static const DIRECTORY = const FileSystemEntityType._internal(1); | 9 static const DIRECTORY = const FileSystemEntityType._internal(1); |
10 static const LINK = const FileSystemEntityType._internal(2); | 10 static const LINK = const FileSystemEntityType._internal(2); |
(...skipping 25 matching lines...) Expand all Loading... | |
36 | 36 |
37 external static int _getType(String path, bool followLinks); | 37 external static int _getType(String path, bool followLinks); |
38 external static bool _identical(String path1, String path2); | 38 external static bool _identical(String path1, String path2); |
39 | 39 |
40 static int _getTypeSync(String path, bool followLinks) { | 40 static int _getTypeSync(String path, bool followLinks) { |
41 var result = _getType(path, followLinks); | 41 var result = _getType(path, followLinks); |
42 _throwIfError(result, 'Error getting type of FileSystemEntity'); | 42 _throwIfError(result, 'Error getting type of FileSystemEntity'); |
43 return result; | 43 return result; |
44 } | 44 } |
45 | 45 |
46 static Future<int> _getTypeAsync(String path, bool followLinks) => | |
47 new Future(() => _getTypeSync(path, followLinks)); | |
Søren Gjesse
2013/05/03 07:13:36
This still needs to be calling a service finction
Bill Hesse
2013/05/03 08:44:06
This is done in a follow-up CL, already written.
| |
48 | |
46 /** | 49 /** |
47 * Do two paths refer to the same object in the file system? | 50 * Do two paths refer to the same object in the file system? |
48 * Links are not identical to their targets, and two links | 51 * Links are not identical to their targets, and two links |
52 * are not identical just because they point to identical targets. | |
53 * Links in intermediate directories in the paths are followed, though. | |
54 * | |
55 * Throws an error if one of the paths points to an object that does not | |
56 * exist. | |
57 * The target of a link can be compared by first getting it with Link.target. | |
58 */ | |
59 static Future<bool> identical(String path1, String path2) => | |
60 new Future<bool>(() => identicalSync(path1, path2)); | |
61 | |
62 /** | |
63 * Do two paths refer to the same object in the file system? | |
64 * Links are not identical to their targets, and two links | |
49 * are not identical just because they point to identical targets. | 65 * are not identical just because they point to identical targets. |
50 * Links in intermediate directories in the paths are followed, though. | 66 * Links in intermediate directories in the paths are followed, though. |
51 * | 67 * |
52 * Throws an error if one of the paths points to an object that does not | 68 * Throws an error if one of the paths points to an object that does not |
53 * exist. | 69 * exist. |
54 * The target of a link can be compared by first getting it with Link.target. | 70 * The target of a link can be compared by first getting it with Link.target. |
55 */ | 71 */ |
56 static bool identicalSync(String path1, String path2) { | 72 static bool identicalSync(String path1, String path2) { |
57 var result = _identical(path1, path2); | 73 var result = _identical(path1, path2); |
58 _throwIfError(result, 'Error in FileSystemEntity.identical'); | 74 _throwIfError(result, 'Error in FileSystemEntity.identical'); |
59 return result; | 75 return result; |
60 } | 76 } |
61 | 77 |
78 static Future<FileSystemEntityType> type(String path, | |
79 {bool followLinks: true}) | |
80 => new Future<FileSystemEntityType>( | |
Bill Hesse
2013/05/02 14:02:42
This function could be changed to its final, corre
Bill Hesse
2013/05/03 08:44:06
Done in the second CL.
| |
81 () => typeSync(path, followLinks: followLinks)); | |
82 | |
62 static FileSystemEntityType typeSync(String path, {bool followLinks: true}) | 83 static FileSystemEntityType typeSync(String path, {bool followLinks: true}) |
63 => FileSystemEntityType._lookup(_getTypeSync(path, followLinks)); | 84 => FileSystemEntityType._lookup(_getTypeSync(path, followLinks)); |
64 | 85 |
86 static Future<bool> isLink(String path) => _getTypeAsync(path, false) | |
87 .then((type) => (type == FileSystemEntityType.LINK._type)); | |
88 | |
89 static Future<bool> isFile(String path) => _getTypeAsync(path, true) | |
90 .then((type) => (type == FileSystemEntityType.FILE._type)); | |
91 | |
92 static Future<bool> isDirectory(String path) => _getTypeAsync(path, true) | |
93 .then((type) => (type == FileSystemEntityType.DIRECTORY._type)); | |
94 | |
65 static bool isLinkSync(String path) => | 95 static bool isLinkSync(String path) => |
66 (_getTypeSync(path, false) == FileSystemEntityType.LINK._type); | 96 (_getTypeSync(path, false) == FileSystemEntityType.LINK._type); |
67 | 97 |
68 static bool isFileSync(String path) => | 98 static bool isFileSync(String path) => |
69 (_getTypeSync(path, true) == FileSystemEntityType.FILE._type); | 99 (_getTypeSync(path, true) == FileSystemEntityType.FILE._type); |
70 | 100 |
71 static bool isDirectorySync(String path) => | 101 static bool isDirectorySync(String path) => |
72 (_getTypeSync(path, true) == FileSystemEntityType.DIRECTORY._type); | 102 (_getTypeSync(path, true) == FileSystemEntityType.DIRECTORY._type); |
73 | 103 |
74 static _throwIfError(Object result, String msg) { | 104 static _throwIfError(Object result, String msg) { |
75 if (result is OSError) { | 105 if (result is OSError) { |
76 throw new FileIOException(msg, result); | 106 throw new FileIOException(msg, result); |
77 } else if (result is ArgumentError) { | 107 } else if (result is ArgumentError) { |
78 throw result; | 108 throw result; |
79 } | 109 } |
80 } | 110 } |
81 } | 111 } |
OLD | NEW |