Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(424)

Side by Side Diff: sdk/lib/io/directory.dart

Issue 12316036: Merge IO v2 branch to bleeding edge (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased to r18818 Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/io/chunked_stream.dart ('k') | sdk/lib/io/directory_impl.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 * [Directory] objects are used for working with directories. 8 * [Directory] objects are used for working with directories.
9 */ 9 */
10 abstract class Directory { 10 abstract class Directory extends FileSystemEntity {
11 /** 11 /**
12 * Creates a directory object. The path is either an absolute path, 12 * Creates a directory object. The path is either an absolute path,
13 * or it is a relative path which is interpreted relative to the directory 13 * or it is a relative path which is interpreted relative to the directory
14 * in which the Dart VM was started. 14 * in which the Dart VM was started.
15 */ 15 */
16 factory Directory(String path) => new _Directory(path); 16 factory Directory(String path) => new _Directory(path);
17 17
18 /** 18 /**
19 * Creates a directory object from a Path object. The path is either 19 * Creates a directory object from a Path object. The path is either
20 * an absolute path, or it is a relative path which is interpreted 20 * an absolute path, or it is a relative path which is interpreted
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 * Synchronously rename this directory. Returns a [Directory] 124 * Synchronously rename this directory. Returns a [Directory]
125 * instance for the renamed directory. 125 * instance for the renamed directory.
126 * 126 *
127 * If newPath identifies an existing directory, that directory is 127 * If newPath identifies an existing directory, that directory is
128 * replaced. If newPath identifies an existing file the operation 128 * replaced. If newPath identifies an existing file the operation
129 * fails and an exception is thrown. 129 * fails and an exception is thrown.
130 */ 130 */
131 Directory renameSync(String newPath); 131 Directory renameSync(String newPath);
132 132
133 /** 133 /**
134 * List the sub-directories and files of this 134 * List the sub-directories and files of this [Directory].
135 * [Directory]. Optionally recurse into sub-directories. Returns a 135 * Optionally recurse into sub-directories.
136 * [DirectoryLister] object representing the active listing 136 *
137 * operation. Handlers for files and directories should be 137 * The result is a stream of [FileSystemEntity] objects
138 * registered on this DirectoryLister object. 138 * for the directories and files.
139 */ 139 */
140 DirectoryLister list({bool recursive: false}); 140 Stream<FileSystemEntity> list({bool recursive: false});
141 141
142 /** 142 /**
143 * List the sub-directories and files of this 143 * List the sub-directories and files of this [Directory].
144 * [Directory]. Optionally recurse into sub-directories. Returns a 144 * Optionally recurse into sub-directories.
145 * List containing Directory and File objects. 145 *
146 * Returns a [List] containing [FileSystemEntity] objects for the
147 * directories and files.
146 */ 148 */
147 List listSync({bool recursive: false}); 149 List<FileSystemEntity> listSync({bool recursive: false});
148 150
149 /** 151 /**
150 * Returns a human readable string for this Directory instance. 152 * Returns a human readable string for this Directory instance.
151 */ 153 */
152 String toString(); 154 String toString();
153 155
154 /** 156 /**
155 * Gets the path of this directory. 157 * Gets the path of this directory.
156 */ 158 */
157 final String path; 159 final String path;
158 } 160 }
159 161
160 162
161 /**
162 * A [DirectoryLister] represents an actively running listing operation.
163 *
164 * A [DirectoryLister] is obtained from a [Directory] object by calling
165 * the [:Directory.list:] method.
166 *
167 * Directory dir = new Directory('path/to/my/dir');
168 * DirectoryLister lister = dir.list();
169 *
170 * For each file and directory, the file or directory handler is
171 * called. When all directories have been listed the done handler is
172 * called. If the listing operation is recursive, the error handler is
173 * called if a subdirectory cannot be opened for listing.
174 */
175 abstract class DirectoryLister {
176 /**
177 * Sets the directory handler that is called for all directories
178 * during listing. The directory handler is called with the full
179 * path of the directory.
180 */
181 void set onDir(void onDir(String dir));
182
183 /**
184 * Sets the handler that is called for all files during listing. The
185 * file handler is called with the full path of the file.
186 */
187 void set onFile(void onFile(String file));
188
189 /**
190 * Set the handler that is called when a listing is done. The
191 * handler is called with an indication of whether or not the
192 * listing operation completed.
193 */
194 void set onDone(void onDone(bool completed));
195
196 /**
197 * Sets the handler that is called if there is an error while
198 * listing directories.
199 */
200 void set onError(void onError(e));
201 }
202
203
204 class DirectoryIOException implements Exception { 163 class DirectoryIOException implements Exception {
205 const DirectoryIOException([String this.message = "", 164 const DirectoryIOException([String this.message = "",
206 String this.path = "", 165 String this.path = "",
207 OSError this.osError = null]); 166 OSError this.osError = null]);
208 String toString() { 167 String toString() {
209 StringBuffer sb = new StringBuffer(); 168 StringBuffer sb = new StringBuffer();
210 sb.add("DirectoryIOException"); 169 sb.add("DirectoryIOException");
211 if (!message.isEmpty) { 170 if (!message.isEmpty) {
212 sb.add(": $message"); 171 sb.add(": $message");
213 if (path != null) { 172 if (path != null) {
214 sb.add(", path = $path"); 173 sb.add(", path = $path");
215 } 174 }
216 if (osError != null) { 175 if (osError != null) {
217 sb.add(" ($osError)"); 176 sb.add(" ($osError)");
218 } 177 }
219 } else if (osError != null) { 178 } else if (osError != null) {
220 sb.add(": $osError"); 179 sb.add(": $osError");
221 if (path != null) { 180 if (path != null) {
222 sb.add(", path = $path"); 181 sb.add(", path = $path");
223 } 182 }
224 } 183 }
225 return sb.toString(); 184 return sb.toString();
226 } 185 }
227 final String message; 186 final String message;
228 final String path; 187 final String path;
229 final OSError osError; 188 final OSError osError;
230 } 189 }
OLDNEW
« no previous file with comments | « sdk/lib/io/chunked_stream.dart ('k') | sdk/lib/io/directory_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698