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 * FileMode describes the modes in which a file can be opened. | 8 * FileMode describes the modes in which a file can be opened. |
9 */ | 9 */ |
10 class FileMode { | 10 class FileMode { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 * existing file might fail if there are restrictive permissions on | 48 * existing file might fail if there are restrictive permissions on |
49 * the file. | 49 * the file. |
50 */ | 50 */ |
51 Future<File> create(); | 51 Future<File> create(); |
52 | 52 |
53 /** | 53 /** |
54 * Synchronously create the file. Existing files are left untouched | 54 * Synchronously create the file. Existing files are left untouched |
55 * by [createSync]. Calling [createSync] on an existing file might fail | 55 * by [createSync]. Calling [createSync] on an existing file might fail |
56 * if there are restrictive permissions on the file. | 56 * if there are restrictive permissions on the file. |
57 * | 57 * |
58 * Throws a [FileException] if the operation fails. | 58 * Throws a [FileSystemException] if the operation fails. |
59 */ | 59 */ |
60 void createSync(); | 60 void createSync(); |
61 | 61 |
62 /** | 62 /** |
63 * Renames this file. Returns a `Future<File>` that completes | 63 * Renames this file. Returns a `Future<File>` that completes |
64 * with a [File] instance for the renamed file. | 64 * with a [File] instance for the renamed file. |
65 * | 65 * |
66 * If [newPath] identifies an existing file, that file is | 66 * If [newPath] identifies an existing file, that file is |
67 * replaced. If [newPath] identifies an existing directory, the | 67 * replaced. If [newPath] identifies an existing directory, the |
68 * operation fails and the future completes with an exception. | 68 * operation fails and the future completes with an exception. |
(...skipping 20 matching lines...) Expand all Loading... |
89 | 89 |
90 /** | 90 /** |
91 * Get the length of the file. Returns a [:Future<int>:] that | 91 * Get the length of the file. Returns a [:Future<int>:] that |
92 * completes with the length in bytes. | 92 * completes with the length in bytes. |
93 */ | 93 */ |
94 Future<int> length(); | 94 Future<int> length(); |
95 | 95 |
96 /** | 96 /** |
97 * Synchronously get the length of the file. | 97 * Synchronously get the length of the file. |
98 * | 98 * |
99 * Throws a [FileException] if the operation fails. | 99 * Throws a [FileSystemException] if the operation fails. |
100 */ | 100 */ |
101 int lengthSync(); | 101 int lengthSync(); |
102 | 102 |
103 /** | 103 /** |
104 * Returns a [File] instance whose path is the absolute path to [this]. | 104 * Returns a [File] instance whose path is the absolute path to [this]. |
105 * | 105 * |
106 * The absolute path is computed by prefixing | 106 * The absolute path is computed by prefixing |
107 * a relative path with the current working directory, and returning | 107 * a relative path with the current working directory, and returning |
108 * an absolute path unchanged. | 108 * an absolute path unchanged. |
109 */ | 109 */ |
110 File get absolute; | 110 File get absolute; |
111 | 111 |
112 /** | 112 /** |
113 * Get the last-modified time of the file. Returns a | 113 * Get the last-modified time of the file. Returns a |
114 * [:Future<DateTime>:] that completes with a [DateTime] object for the | 114 * [:Future<DateTime>:] that completes with a [DateTime] object for the |
115 * modification date. | 115 * modification date. |
116 */ | 116 */ |
117 Future<DateTime> lastModified(); | 117 Future<DateTime> lastModified(); |
118 | 118 |
119 /** | 119 /** |
120 * Get the last-modified time of the file. Throws an exception | 120 * Get the last-modified time of the file. Throws an exception |
121 * if the file does not exist. | 121 * if the file does not exist. |
122 * | 122 * |
123 * Throws a [FileException] if the operation fails. | 123 * Throws a [FileSystemException] if the operation fails. |
124 */ | 124 */ |
125 DateTime lastModifiedSync(); | 125 DateTime lastModifiedSync(); |
126 | 126 |
127 /** | 127 /** |
128 * Open the file for random access operations. Returns a | 128 * Open the file for random access operations. Returns a |
129 * [:Future<RandomAccessFile>:] that completes with the opened | 129 * [:Future<RandomAccessFile>:] that completes with the opened |
130 * random access file. [RandomAccessFile]s must be closed using the | 130 * random access file. [RandomAccessFile]s must be closed using the |
131 * [RandomAccessFile.close] method. | 131 * [RandomAccessFile.close] method. |
132 * | 132 * |
133 * Files can be opened in three modes: | 133 * Files can be opened in three modes: |
(...skipping 10 matching lines...) Expand all Loading... |
144 Future<RandomAccessFile> open({FileMode mode: FileMode.READ}); | 144 Future<RandomAccessFile> open({FileMode mode: FileMode.READ}); |
145 | 145 |
146 /** | 146 /** |
147 * Synchronously open the file for random access operations. The | 147 * Synchronously open the file for random access operations. The |
148 * result is a [RandomAccessFile] on which random access operations | 148 * result is a [RandomAccessFile] on which random access operations |
149 * can be performed. Opened [RandomAccessFile]s must be closed using | 149 * can be performed. Opened [RandomAccessFile]s must be closed using |
150 * the [RandomAccessFile.close] method. | 150 * the [RandomAccessFile.close] method. |
151 * | 151 * |
152 * See [open] for information on the [mode] argument. | 152 * See [open] for information on the [mode] argument. |
153 * | 153 * |
154 * Throws a [FileException] if the operation fails. | 154 * Throws a [FileSystemException] if the operation fails. |
155 */ | 155 */ |
156 RandomAccessFile openSync({FileMode mode: FileMode.READ}); | 156 RandomAccessFile openSync({FileMode mode: FileMode.READ}); |
157 | 157 |
158 /** | 158 /** |
159 * Get the canonical full path corresponding to the file path. | 159 * Get the canonical full path corresponding to the file path. |
160 * Returns a [:Future<String>:] that completes with the path. | 160 * Returns a [:Future<String>:] that completes with the path. |
161 * | 161 * |
162 * *FullPath is deprecated. Use absolutePath or resolveSymbolicLinks | 162 * *FullPath is deprecated. Use absolutePath or resolveSymbolicLinks |
163 * instead. FullPath will be removed the 23rd of September, 2013.* | 163 * instead. FullPath will be removed the 23rd of September, 2013.* |
164 */ | 164 */ |
165 @deprecated | 165 @deprecated |
166 Future<String> fullPath(); | 166 Future<String> fullPath(); |
167 | 167 |
168 /** | 168 /** |
169 * Synchronously get the canonical full path corresponding to the file path. | 169 * Synchronously get the canonical full path corresponding to the file path. |
170 * | 170 * |
171 * Throws a [FileException] if the operation fails. | 171 * Throws a [FileSystemException] if the operation fails. |
172 * | 172 * |
173 * *FullPathSync is deprecated. Use absolutePathSync or | 173 * *FullPathSync is deprecated. Use absolutePathSync or |
174 * resolveSymbolicLinksSync instead. FullPathSync will be removed | 174 * resolveSymbolicLinksSync instead. FullPathSync will be removed |
175 * the 23rd of September, 2013.* | 175 * the 23rd of September, 2013.* |
176 */ | 176 */ |
177 @deprecated | 177 @deprecated |
178 String fullPathSync(); | 178 String fullPathSync(); |
179 | 179 |
180 /** | 180 /** |
181 * Create a new independent [Stream] for the contents of this file. | 181 * Create a new independent [Stream] for the contents of this file. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 /** | 214 /** |
215 * Read the entire file contents as a list of bytes. Returns a | 215 * Read the entire file contents as a list of bytes. Returns a |
216 * [:Future<List<int>>:] that completes with the list of bytes that | 216 * [:Future<List<int>>:] that completes with the list of bytes that |
217 * is the contents of the file. | 217 * is the contents of the file. |
218 */ | 218 */ |
219 Future<List<int>> readAsBytes(); | 219 Future<List<int>> readAsBytes(); |
220 | 220 |
221 /** | 221 /** |
222 * Synchronously read the entire file contents as a list of bytes. | 222 * Synchronously read the entire file contents as a list of bytes. |
223 * | 223 * |
224 * Throws a [FileException] if the operation fails. | 224 * Throws a [FileSystemException] if the operation fails. |
225 */ | 225 */ |
226 List<int> readAsBytesSync(); | 226 List<int> readAsBytesSync(); |
227 | 227 |
228 /** | 228 /** |
229 * Read the entire file contents as a string using the given | 229 * Read the entire file contents as a string using the given |
230 * [Encoding]. | 230 * [Encoding]. |
231 * | 231 * |
232 * Returns a [:Future<String>:] that completes with the string once | 232 * Returns a [:Future<String>:] that completes with the string once |
233 * the file contents has been read. | 233 * the file contents has been read. |
234 */ | 234 */ |
235 Future<String> readAsString({Encoding encoding: UTF8}); | 235 Future<String> readAsString({Encoding encoding: UTF8}); |
236 | 236 |
237 /** | 237 /** |
238 * Synchronously read the entire file contents as a string using the | 238 * Synchronously read the entire file contents as a string using the |
239 * given [Encoding]. | 239 * given [Encoding]. |
240 * | 240 * |
241 * Throws a [FileException] if the operation fails. | 241 * Throws a [FileSystemException] if the operation fails. |
242 */ | 242 */ |
243 String readAsStringSync({Encoding encoding: UTF8}); | 243 String readAsStringSync({Encoding encoding: UTF8}); |
244 | 244 |
245 /** | 245 /** |
246 * Read the entire file contents as lines of text using the given | 246 * Read the entire file contents as lines of text using the given |
247 * [Encoding]. | 247 * [Encoding]. |
248 * | 248 * |
249 * Returns a [:Future<List<String>>:] that completes with the lines | 249 * Returns a [:Future<List<String>>:] that completes with the lines |
250 * once the file contents has been read. | 250 * once the file contents has been read. |
251 */ | 251 */ |
252 Future<List<String>> readAsLines({Encoding encoding: UTF8}); | 252 Future<List<String>> readAsLines({Encoding encoding: UTF8}); |
253 | 253 |
254 /** | 254 /** |
255 * Synchronously read the entire file contents as lines of text | 255 * Synchronously read the entire file contents as lines of text |
256 * using the given [Encoding]. | 256 * using the given [Encoding]. |
257 * | 257 * |
258 * Throws a [FileException] if the operation fails. | 258 * Throws a [FileSystemException] if the operation fails. |
259 */ | 259 */ |
260 List<String> readAsLinesSync({Encoding encoding: UTF8}); | 260 List<String> readAsLinesSync({Encoding encoding: UTF8}); |
261 | 261 |
262 /** | 262 /** |
263 * Write a list of bytes to a file. | 263 * Write a list of bytes to a file. |
264 * | 264 * |
265 * Opens the file, writes the list of bytes to it, and closes the file. | 265 * Opens the file, writes the list of bytes to it, and closes the file. |
266 * Returns a [:Future<File>:] that completes with this [File] object once | 266 * Returns a [:Future<File>:] that completes with this [File] object once |
267 * the entire operation has completed. | 267 * the entire operation has completed. |
268 * | 268 * |
269 * By default [writeAsBytes] creates the file for writing and truncates the | 269 * By default [writeAsBytes] creates the file for writing and truncates the |
270 * file if it already exists. In order to append the bytes to an existing | 270 * file if it already exists. In order to append the bytes to an existing |
271 * file, pass [FileMode.APPEND] as the optional mode parameter. | 271 * file, pass [FileMode.APPEND] as the optional mode parameter. |
272 */ | 272 */ |
273 Future<File> writeAsBytes(List<int> bytes, {FileMode mode: FileMode.WRITE}); | 273 Future<File> writeAsBytes(List<int> bytes, {FileMode mode: FileMode.WRITE}); |
274 | 274 |
275 /** | 275 /** |
276 * Synchronously write a list of bytes to a file. | 276 * Synchronously write a list of bytes to a file. |
277 * | 277 * |
278 * Opens the file, writes the list of bytes to it and closes the file. | 278 * Opens the file, writes the list of bytes to it and closes the file. |
279 * | 279 * |
280 * By default [writeAsBytesSync] creates the file for writing and truncates | 280 * By default [writeAsBytesSync] creates the file for writing and truncates |
281 * the file if it already exists. In order to append the bytes to an existing | 281 * the file if it already exists. In order to append the bytes to an existing |
282 * file, pass [FileMode.APPEND] as the optional mode parameter. | 282 * file, pass [FileMode.APPEND] as the optional mode parameter. |
283 * | 283 * |
284 * Throws a [FileException] if the operation fails. | 284 * Throws a [FileSystemException] if the operation fails. |
285 */ | 285 */ |
286 void writeAsBytesSync(List<int> bytes, {FileMode mode: FileMode.WRITE}); | 286 void writeAsBytesSync(List<int> bytes, {FileMode mode: FileMode.WRITE}); |
287 | 287 |
288 /** | 288 /** |
289 * Write a string to a file. | 289 * Write a string to a file. |
290 * | 290 * |
291 * Opens the file, writes the string in the given encoding, and closes the | 291 * Opens the file, writes the string in the given encoding, and closes the |
292 * file. Returns a [:Future<File>:] that completes with this [File] object | 292 * file. Returns a [:Future<File>:] that completes with this [File] object |
293 * once the entire operation has completed. | 293 * once the entire operation has completed. |
294 * | 294 * |
295 * By default [writeAsString] creates the file for writing and truncates the | 295 * By default [writeAsString] creates the file for writing and truncates the |
296 * file if it already exists. In order to append the bytes to an existing | 296 * file if it already exists. In order to append the bytes to an existing |
297 * file, pass [FileMode.APPEND] as the optional mode parameter. | 297 * file, pass [FileMode.APPEND] as the optional mode parameter. |
298 */ | 298 */ |
299 Future<File> writeAsString(String contents, | 299 Future<File> writeAsString(String contents, |
300 {FileMode mode: FileMode.WRITE, | 300 {FileMode mode: FileMode.WRITE, |
301 Encoding encoding: UTF8}); | 301 Encoding encoding: UTF8}); |
302 | 302 |
303 /** | 303 /** |
304 * Synchronously write a string to a file. | 304 * Synchronously write a string to a file. |
305 * | 305 * |
306 * Opens the file, writes the string in the given encoding, and closes the | 306 * Opens the file, writes the string in the given encoding, and closes the |
307 * file. | 307 * file. |
308 * | 308 * |
309 * By default [writeAsStringSync] creates the file for writing and | 309 * By default [writeAsStringSync] creates the file for writing and |
310 * truncates the file if it already exists. In order to append the bytes | 310 * truncates the file if it already exists. In order to append the bytes |
311 * to an existing file, pass [FileMode.APPEND] as the optional mode | 311 * to an existing file, pass [FileMode.APPEND] as the optional mode |
312 * parameter. | 312 * parameter. |
313 * | 313 * |
314 * Throws a [FileException] if the operation fails. | 314 * Throws a [FileSystemException] if the operation fails. |
315 */ | 315 */ |
316 void writeAsStringSync(String contents, | 316 void writeAsStringSync(String contents, |
317 {FileMode mode: FileMode.WRITE, | 317 {FileMode mode: FileMode.WRITE, |
318 Encoding encoding: UTF8}); | 318 Encoding encoding: UTF8}); |
319 | 319 |
320 /** | 320 /** |
321 * Get the path of the file. | 321 * Get the path of the file. |
322 */ | 322 */ |
323 String get path; | 323 String get path; |
324 } | 324 } |
325 | 325 |
326 | 326 |
327 /** | 327 /** |
328 * [RandomAccessFile] provides random access to the data in a | 328 * [RandomAccessFile] provides random access to the data in a |
329 * file. [RandomAccessFile] objects are obtained by calling the | 329 * file. [RandomAccessFile] objects are obtained by calling the |
330 * [:open:] method on a [File] object. | 330 * [:open:] method on a [File] object. |
331 */ | 331 */ |
332 abstract class RandomAccessFile { | 332 abstract class RandomAccessFile { |
333 /** | 333 /** |
334 * Closes the file. Returns a [:Future<RandomAccessFile>:] that | 334 * Closes the file. Returns a [:Future<RandomAccessFile>:] that |
335 * completes with this RandomAccessFile when it has been closed. | 335 * completes with this RandomAccessFile when it has been closed. |
336 */ | 336 */ |
337 Future<RandomAccessFile> close(); | 337 Future<RandomAccessFile> close(); |
338 | 338 |
339 /** | 339 /** |
340 * Synchronously closes the file. | 340 * Synchronously closes the file. |
341 * | 341 * |
342 * Throws a [FileException] if the operation fails. | 342 * Throws a [FileSystemException] if the operation fails. |
343 */ | 343 */ |
344 void closeSync(); | 344 void closeSync(); |
345 | 345 |
346 /** | 346 /** |
347 * Reads a byte from the file. Returns a [:Future<int>:] that | 347 * Reads a byte from the file. Returns a [:Future<int>:] that |
348 * completes with the byte, or with -1 if end-of-file has been reached. | 348 * completes with the byte, or with -1 if end-of-file has been reached. |
349 */ | 349 */ |
350 Future<int> readByte(); | 350 Future<int> readByte(); |
351 | 351 |
352 /** | 352 /** |
353 * Synchronously reads a single byte from the file. If end-of-file | 353 * Synchronously reads a single byte from the file. If end-of-file |
354 * has been reached -1 is returned. | 354 * has been reached -1 is returned. |
355 * | 355 * |
356 * Throws a [FileException] if the operation fails. | 356 * Throws a [FileSystemException] if the operation fails. |
357 */ | 357 */ |
358 int readByteSync(); | 358 int readByteSync(); |
359 | 359 |
360 /** | 360 /** |
361 * Reads [bytes] bytes from a file and returns the result as a list of bytes. | 361 * Reads [bytes] bytes from a file and returns the result as a list of bytes. |
362 */ | 362 */ |
363 Future<List<int>> read(int bytes); | 363 Future<List<int>> read(int bytes); |
364 | 364 |
365 /** | 365 /** |
366 * Synchronously reads a maximum of [bytes] bytes from a file and | 366 * Synchronously reads a maximum of [bytes] bytes from a file and |
367 * returns the result in a list of bytes. | 367 * returns the result in a list of bytes. |
368 * | 368 * |
369 * Throws a [FileException] if the operation fails. | 369 * Throws a [FileSystemException] if the operation fails. |
370 */ | 370 */ |
371 List<int> readSync(int bytes); | 371 List<int> readSync(int bytes); |
372 | 372 |
373 /** | 373 /** |
374 * Reads into an existing List<int> from the file. If [start] is present, the | 374 * Reads into an existing List<int> from the file. If [start] is present, the |
375 * bytes will be filled into [buffer] from at index [start], otherwise index | 375 * bytes will be filled into [buffer] from at index [start], otherwise index |
376 * 0. If [end] is present, the [end] - [start] bytes will be read into | 376 * 0. If [end] is present, the [end] - [start] bytes will be read into |
377 * [buffer], otherwise up to [buffer.length]. If [end] == [start] nothing | 377 * [buffer], otherwise up to [buffer.length]. If [end] == [start] nothing |
378 * happends. | 378 * happends. |
379 * | 379 * |
380 * Returns a [:Future<int>:] that completes with the number of bytes read. | 380 * Returns a [:Future<int>:] that completes with the number of bytes read. |
381 */ | 381 */ |
382 Future<int> readInto(List<int> buffer, [int start, int end]); | 382 Future<int> readInto(List<int> buffer, [int start, int end]); |
383 | 383 |
384 /** | 384 /** |
385 * Synchronously reads into an existing List<int> from the file. If [start] is | 385 * Synchronously reads into an existing List<int> from the file. If [start] is |
386 * present, the bytes will be filled into [buffer] from at index [start], | 386 * present, the bytes will be filled into [buffer] from at index [start], |
387 * otherwise index 0. If [end] is present, the [end] - [start] bytes will be | 387 * otherwise index 0. If [end] is present, the [end] - [start] bytes will be |
388 * read into [buffer], otherwise up to [buffer.length]. If [end] == [start] | 388 * read into [buffer], otherwise up to [buffer.length]. If [end] == [start] |
389 * nothing happends. | 389 * nothing happends. |
390 * | 390 * |
391 * Throws a [FileException] if the operation fails. | 391 * Throws a [FileSystemException] if the operation fails. |
392 */ | 392 */ |
393 int readIntoSync(List<int> buffer, [int start, int end]); | 393 int readIntoSync(List<int> buffer, [int start, int end]); |
394 | 394 |
395 /** | 395 /** |
396 * Writes a single byte to the file. Returns a | 396 * Writes a single byte to the file. Returns a |
397 * [:Future<RandomAccessFile>:] that completes with this | 397 * [:Future<RandomAccessFile>:] that completes with this |
398 * RandomAccessFile when the write completes. | 398 * RandomAccessFile when the write completes. |
399 */ | 399 */ |
400 Future<RandomAccessFile> writeByte(int value); | 400 Future<RandomAccessFile> writeByte(int value); |
401 | 401 |
402 /** | 402 /** |
403 * Synchronously writes a single byte to the file. Returns the | 403 * Synchronously writes a single byte to the file. Returns the |
404 * number of bytes successfully written. | 404 * number of bytes successfully written. |
405 * | 405 * |
406 * Throws a [FileException] if the operation fails. | 406 * Throws a [FileSystemException] if the operation fails. |
407 */ | 407 */ |
408 int writeByteSync(int value); | 408 int writeByteSync(int value); |
409 | 409 |
410 /** | 410 /** |
411 * Writes from a [List<int>] to the file. It will read the buffer from index | 411 * Writes from a [List<int>] to the file. It will read the buffer from index |
412 * [start] to index [end]. If [start] is omitted, it'll start from index 0. | 412 * [start] to index [end]. If [start] is omitted, it'll start from index 0. |
413 * If [end] is omitted, it will write to end of [buffer]. | 413 * If [end] is omitted, it will write to end of [buffer]. |
414 * | 414 * |
415 * Returns a [:Future<RandomAccessFile>:] that completes with this | 415 * Returns a [:Future<RandomAccessFile>:] that completes with this |
416 * [RandomAccessFile] when the write completes. | 416 * [RandomAccessFile] when the write completes. |
417 */ | 417 */ |
418 Future<RandomAccessFile> writeFrom(List<int> buffer, [int start, int end]); | 418 Future<RandomAccessFile> writeFrom(List<int> buffer, [int start, int end]); |
419 | 419 |
420 /** | 420 /** |
421 * Synchronously writes from a [List<int>] to the file. It will read the | 421 * Synchronously writes from a [List<int>] to the file. It will read the |
422 * buffer from index [start] to index [end]. If [start] is omitted, it'll | 422 * buffer from index [start] to index [end]. If [start] is omitted, it'll |
423 * start from index 0. If [end] is omitted, it will write to the end of | 423 * start from index 0. If [end] is omitted, it will write to the end of |
424 * [buffer]. | 424 * [buffer]. |
425 * | 425 * |
426 * Throws a [FileException] if the operation fails. | 426 * Throws a [FileSystemException] if the operation fails. |
427 */ | 427 */ |
428 void writeFromSync(List<int> buffer, [int start, int end]); | 428 void writeFromSync(List<int> buffer, [int start, int end]); |
429 | 429 |
430 /** | 430 /** |
431 * Writes a string to the file using the given [Encoding]. Returns a | 431 * Writes a string to the file using the given [Encoding]. Returns a |
432 * [:Future<RandomAccessFile>:] that completes with this | 432 * [:Future<RandomAccessFile>:] that completes with this |
433 * RandomAccessFile when the write completes. | 433 * RandomAccessFile when the write completes. |
434 */ | 434 */ |
435 Future<RandomAccessFile> writeString(String string, | 435 Future<RandomAccessFile> writeString(String string, |
436 {Encoding encoding: UTF8}); | 436 {Encoding encoding: UTF8}); |
437 | 437 |
438 /** | 438 /** |
439 * Synchronously writes a single string to the file using the given | 439 * Synchronously writes a single string to the file using the given |
440 * [Encoding]. | 440 * [Encoding]. |
441 * | 441 * |
442 * Throws a [FileException] if the operation fails. | 442 * Throws a [FileSystemException] if the operation fails. |
443 */ | 443 */ |
444 void writeStringSync(String string, | 444 void writeStringSync(String string, |
445 {Encoding encoding: UTF8}); | 445 {Encoding encoding: UTF8}); |
446 | 446 |
447 /** | 447 /** |
448 * Gets the current byte position in the file. Returns a | 448 * Gets the current byte position in the file. Returns a |
449 * [:Future<int>:] that completes with the position. | 449 * [:Future<int>:] that completes with the position. |
450 */ | 450 */ |
451 Future<int> position(); | 451 Future<int> position(); |
452 | 452 |
453 /** | 453 /** |
454 * Synchronously gets the current byte position in the file. | 454 * Synchronously gets the current byte position in the file. |
455 * | 455 * |
456 * Throws a [FileException] if the operation fails. | 456 * Throws a [FileSystemException] if the operation fails. |
457 */ | 457 */ |
458 int positionSync(); | 458 int positionSync(); |
459 | 459 |
460 /** | 460 /** |
461 * Sets the byte position in the file. Returns a | 461 * Sets the byte position in the file. Returns a |
462 * [:Future<RandomAccessFile>:] that completes with this | 462 * [:Future<RandomAccessFile>:] that completes with this |
463 * RandomAccessFile when the position has been set. | 463 * RandomAccessFile when the position has been set. |
464 */ | 464 */ |
465 Future<RandomAccessFile> setPosition(int position); | 465 Future<RandomAccessFile> setPosition(int position); |
466 | 466 |
467 /** | 467 /** |
468 * Synchronously sets the byte position in the file. | 468 * Synchronously sets the byte position in the file. |
469 * | 469 * |
470 * Throws a [FileException] if the operation fails. | 470 * Throws a [FileSystemException] if the operation fails. |
471 */ | 471 */ |
472 void setPositionSync(int position); | 472 void setPositionSync(int position); |
473 | 473 |
474 /** | 474 /** |
475 * Truncates (or extends) the file to [length] bytes. Returns a | 475 * Truncates (or extends) the file to [length] bytes. Returns a |
476 * [:Future<RandomAccessFile>:] that completes with this | 476 * [:Future<RandomAccessFile>:] that completes with this |
477 * RandomAccessFile when the truncation has been performed. | 477 * RandomAccessFile when the truncation has been performed. |
478 */ | 478 */ |
479 Future<RandomAccessFile> truncate(int length); | 479 Future<RandomAccessFile> truncate(int length); |
480 | 480 |
481 /** | 481 /** |
482 * Synchronously truncates (or extends) the file to [length] bytes. | 482 * Synchronously truncates (or extends) the file to [length] bytes. |
483 * | 483 * |
484 * Throws a [FileException] if the operation fails. | 484 * Throws a [FileSystemException] if the operation fails. |
485 */ | 485 */ |
486 void truncateSync(int length); | 486 void truncateSync(int length); |
487 | 487 |
488 /** | 488 /** |
489 * Gets the length of the file. Returns a [:Future<int>:] that | 489 * Gets the length of the file. Returns a [:Future<int>:] that |
490 * completes with the length in bytes. | 490 * completes with the length in bytes. |
491 */ | 491 */ |
492 Future<int> length(); | 492 Future<int> length(); |
493 | 493 |
494 /** | 494 /** |
495 * Synchronously gets the length of the file. | 495 * Synchronously gets the length of the file. |
496 * | 496 * |
497 * Throws a [FileException] if the operation fails. | 497 * Throws a [FileSystemException] if the operation fails. |
498 */ | 498 */ |
499 int lengthSync(); | 499 int lengthSync(); |
500 | 500 |
501 /** | 501 /** |
502 * Flushes the contents of the file to disk. Returns a | 502 * Flushes the contents of the file to disk. Returns a |
503 * [:Future<RandomAccessFile>:] that completes with this | 503 * [:Future<RandomAccessFile>:] that completes with this |
504 * RandomAccessFile when the flush operation completes. | 504 * RandomAccessFile when the flush operation completes. |
505 */ | 505 */ |
506 Future<RandomAccessFile> flush(); | 506 Future<RandomAccessFile> flush(); |
507 | 507 |
508 /** | 508 /** |
509 * Synchronously flushes the contents of the file to disk. | 509 * Synchronously flushes the contents of the file to disk. |
510 * | 510 * |
511 * Throws a [FileException] if the operation fails. | 511 * Throws a [FileSystemException] if the operation fails. |
512 */ | 512 */ |
513 void flushSync(); | 513 void flushSync(); |
514 | 514 |
515 /** | 515 /** |
516 * Returns a human-readable string for this RandomAccessFile instance. | 516 * Returns a human-readable string for this RandomAccessFile instance. |
517 */ | 517 */ |
518 String toString(); | 518 String toString(); |
519 | 519 |
520 /** | 520 /** |
521 * Gets the path of the file underlying this RandomAccessFile. | 521 * Gets the path of the file underlying this RandomAccessFile. |
522 */ | 522 */ |
523 String get path; | 523 String get path; |
524 } | 524 } |
525 | 525 |
526 | 526 |
527 class FileException implements IOException { | 527 class FileSystemException implements IOException { |
528 final String message; | 528 final String message; |
529 final String path; | 529 final String path; |
530 final OSError osError; | 530 final OSError osError; |
531 const FileException([String this.message = "", | 531 const FileSystemException([String this.message = "", |
532 String this.path = "", | 532 String this.path = "", |
533 OSError this.osError]); | 533 OSError this.osError]); |
534 | 534 |
535 String toString() { | 535 String toString() { |
536 StringBuffer sb = new StringBuffer(); | 536 StringBuffer sb = new StringBuffer(); |
537 sb.write("FileException"); | 537 sb.write("FileSystemException"); |
538 if (!message.isEmpty) { | 538 if (!message.isEmpty) { |
539 sb.write(": $message"); | 539 sb.write(": $message"); |
540 if (path != null) { | 540 if (path != null) { |
541 sb.write(", path = $path"); | 541 sb.write(", path = $path"); |
542 } | 542 } |
543 if (osError != null) { | 543 if (osError != null) { |
544 sb.write(" ($osError)"); | 544 sb.write(" ($osError)"); |
545 } | 545 } |
546 } else if (osError != null) { | 546 } else if (osError != null) { |
547 sb.write(": osError"); | 547 sb.write(": osError"); |
548 if (path != null) { | 548 if (path != null) { |
549 sb.write(", path = $path"); | 549 sb.write(", path = $path"); |
550 } | 550 } |
551 } | 551 } |
552 return sb.toString(); | 552 return sb.toString(); |
553 } | 553 } |
554 } | 554 } |
OLD | NEW |