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 /** | 7 /** |
8 * The type of an entity on the file system, such as a file, directory, or link. | 8 * The type of an entity on the file system, such as a file, directory, or link. |
9 * | 9 * |
10 * These constants are used by the [FileSystemEntity] class | 10 * These constants are used by the [FileSystemEntity] class |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 * FileSystemEntityType.NOT_FOUND and the other fields invalid. | 97 * FileSystemEntityType.NOT_FOUND and the other fields invalid. |
98 */ | 98 */ |
99 static FileStat statSync(String path) { | 99 static FileStat statSync(String path) { |
100 // Trailing path is not supported on Windows. | 100 // Trailing path is not supported on Windows. |
101 if (Platform.isWindows) { | 101 if (Platform.isWindows) { |
102 path = FileSystemEntity._trimTrailingPathSeparators(path); | 102 path = FileSystemEntity._trimTrailingPathSeparators(path); |
103 } | 103 } |
104 var data = _statSync(path); | 104 var data = _statSync(path); |
105 if (data is OSError) return FileStat._notFound; | 105 if (data is OSError) return FileStat._notFound; |
106 return new FileStat._internal( | 106 return new FileStat._internal( |
107 new DateTime.fromMillisecondsSinceEpoch(data[_CHANGED_TIME] * 1000), | 107 new DateTime.fromMillisecondsSinceEpoch(data[_CHANGED_TIME]), |
108 new DateTime.fromMillisecondsSinceEpoch(data[_MODIFIED_TIME] * 1000), | 108 new DateTime.fromMillisecondsSinceEpoch(data[_MODIFIED_TIME]), |
109 new DateTime.fromMillisecondsSinceEpoch(data[_ACCESSED_TIME] * 1000), | 109 new DateTime.fromMillisecondsSinceEpoch(data[_ACCESSED_TIME]), |
110 FileSystemEntityType._lookup(data[_TYPE]), | 110 FileSystemEntityType._lookup(data[_TYPE]), |
111 data[_MODE], | 111 data[_MODE], |
112 data[_SIZE]); | 112 data[_SIZE]); |
113 } | 113 } |
114 | 114 |
115 /** | 115 /** |
116 * Asynchronously calls the operating system's stat() function on [path]. | 116 * Asynchronously calls the operating system's stat() function on [path]. |
117 * Returns a Future which completes with a [FileStat] object containing | 117 * Returns a Future which completes with a [FileStat] object containing |
118 * the data returned by stat(). | 118 * the data returned by stat(). |
119 * If the call fails, completes the future with a [FileStat] object with | 119 * If the call fails, completes the future with a [FileStat] object with |
120 * .type set to FileSystemEntityType.NOT_FOUND and the other fields invalid. | 120 * .type set to FileSystemEntityType.NOT_FOUND and the other fields invalid. |
121 */ | 121 */ |
122 static Future<FileStat> stat(String path) { | 122 static Future<FileStat> stat(String path) { |
123 // Trailing path is not supported on Windows. | 123 // Trailing path is not supported on Windows. |
124 if (Platform.isWindows) { | 124 if (Platform.isWindows) { |
125 path = FileSystemEntity._trimTrailingPathSeparators(path); | 125 path = FileSystemEntity._trimTrailingPathSeparators(path); |
126 } | 126 } |
127 return _IOService.dispatch(_FILE_STAT, [path]).then((response) { | 127 return _IOService.dispatch(_FILE_STAT, [path]).then((response) { |
128 if (_isErrorResponse(response)) { | 128 if (_isErrorResponse(response)) { |
129 return FileStat._notFound; | 129 return FileStat._notFound; |
130 } | 130 } |
131 // Unwrap the real list from the "I'm not an error" wrapper. | 131 // Unwrap the real list from the "I'm not an error" wrapper. |
132 List data = response[1]; | 132 List data = response[1]; |
133 return new FileStat._internal( | 133 return new FileStat._internal( |
134 new DateTime.fromMillisecondsSinceEpoch(data[_CHANGED_TIME] * 1000), | 134 new DateTime.fromMillisecondsSinceEpoch(data[_CHANGED_TIME]), |
135 new DateTime.fromMillisecondsSinceEpoch(data[_MODIFIED_TIME] * 1000), | 135 new DateTime.fromMillisecondsSinceEpoch(data[_MODIFIED_TIME]), |
136 new DateTime.fromMillisecondsSinceEpoch(data[_ACCESSED_TIME] * 1000), | 136 new DateTime.fromMillisecondsSinceEpoch(data[_ACCESSED_TIME]), |
137 FileSystemEntityType._lookup(data[_TYPE]), | 137 FileSystemEntityType._lookup(data[_TYPE]), |
138 data[_MODE], | 138 data[_MODE], |
139 data[_SIZE]); | 139 data[_SIZE]); |
140 }); | 140 }); |
141 } | 141 } |
142 | 142 |
143 String toString() => """ | 143 String toString() => """ |
144 FileStat: type $type | 144 FileStat: type $type |
145 changed $changed | 145 changed $changed |
146 modified $modified | 146 modified $modified |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 return buffer.toString(); | 806 return buffer.toString(); |
807 } | 807 } |
808 } | 808 } |
809 | 809 |
810 | 810 |
811 class _FileSystemWatcher { | 811 class _FileSystemWatcher { |
812 external static Stream<FileSystemEvent> watch( | 812 external static Stream<FileSystemEvent> watch( |
813 String path, int events, bool recursive); | 813 String path, int events, bool recursive); |
814 external static bool get isSupported; | 814 external static bool get isSupported; |
815 } | 815 } |
OLD | NEW |