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

Unified Diff: sdk/lib/io/file.dart

Issue 159713011: class-level docs for several dart:io classes (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge with master Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sdk/lib/io/directory.dart ('k') | sdk/lib/io/file_system_entity.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/io/file.dart
diff --git a/sdk/lib/io/file.dart b/sdk/lib/io/file.dart
index 9bf6632d01f9687decf8916e8c1e367589e598c7..b8df149594e70571482cc81944472bd90ebced54 100644
--- a/sdk/lib/io/file.dart
+++ b/sdk/lib/io/file.dart
@@ -5,45 +5,173 @@
part of dart.io;
/**
- * FileMode describes the modes in which a file can be opened.
+ * The modes in which a File can be opened.
*/
class FileMode {
- /// The [FileMode] for opening a file only for reading.
+ /// The mode for opening a file only for reading.
static const READ = const FileMode._internal(0);
- /// The [FileMode] for opening a file for reading and writing. The file will
- /// be overwritten. If the file does not exist, it will be created.
+ /// The mode for opening a file for reading and writing. The file is
+ /// overwritten if it already exists. The file is created if it does not
+ /// already exist.
static const WRITE = const FileMode._internal(1);
- /// The [FileMode] for opening a file for reading a file and writing to the
- /// end of it. If the file does not exist, it will be created.
+ /// The mode for opening a file for reading and writing to the
+ /// end of it. The file is created if it does not already exist.
static const APPEND = const FileMode._internal(2);
final int _mode;
const FileMode._internal(this._mode);
}
-/// The [FileMode] for opening a file only for reading.
+/// The mode for opening a file only for reading.
const READ = FileMode.READ;
-/// The [FileMode] for opening a file for reading and writing. The file will be
-/// overwritten. If the file does not exist, it will be created.
+/// The mode for opening a file for reading and writing. The file is
+/// overwritten if it already exists. The file is created if it does not
+/// already exist.
const WRITE = FileMode.WRITE;
-/// The [FileMode] for opening a file for reading a file and writing to the end
-/// of it. If the file does not exist, it will be created.
+/// The mode for opening a file for reading and writing to the
+/// end of it. The file is created if it does not already exist.
const APPEND = FileMode.APPEND;
/**
* A reference to a file on the file system.
*
- * If [path] is a symbolic link, rather than a file, then
- * the methods of [File] operate on the ultimate target of the
- * link, except for File.delete and File.deleteSync, which operate on
+ * A File instance is an object that holds a [path] on which operations can
+ * be performed.
+ * You can get the parent directory of the file using the getter [parent],
+ * a property inherited from [FileSystemEntity].
+ *
+ * Create a new File object with a pathname to access the specified file on the
+ * file system from your program.
+ *
+ * var myFile = new File('file.txt');
+ *
+ * The File class contains methods for manipulating files and their contents.
+ * Using methods in this class, you can open and close files, read to and write
+ * from them, create and delete them, and check for their existence.
+ *
+ * When reading or writing a file, you can use streams (with [openRead]),
+ * random access operations (with [open]),
+ * or convenience methods such as [readAsString],
+ *
+ * Most methods in this class occur in synchronous and asynchronous pairs,
+ * for example, [readAsString] and [readAsStringSync].
+ * Unless you have a specific reason for using the synchronous version
+ * of a method, prefer the asynchronous version to avoid blocking your program.
+ *
+ * ## If path is a link
+ *
+ * If [path] is a symbolic link, rather than a file,
+ * then the methods of File operate on the ultimate target of the
+ * link, except for [delete] and [deleteSync], which operate on
* the link.
*
- * To operate on the underlying file data there are two options:
+ * ## Read from a file
+ *
+ * The following code sample reads the entire contents from a file as a string
+ * using the asynchronous [readAsString] method:
+ *
+ * import 'dart:async';
+ * import 'dart:io';
+ *
+ * void main() {
+ * new File('file.txt').readAsString().then((String contents) {
+ * print(contents);
+ * });
+ * }
+ *
+ * A more flexible and useful way to read a file is with a [Stream].
+ * Open the file with [openRead], which returns a stream that
+ * provides the data in the file as chunks of bytes.
+ * Listen to the stream for data and process as needed.
+ * You can use various transformers in succession to manipulate the
+ * data into the required format or to prepare it for output.
+ *
+ * You might want to use a stream to read large files,
+ * to manipulate the data with tranformers,
+ * or for compatibility with another API, such as [WebSocket]s.
+ *
+ * import 'dart:io';
+ * import 'dart:convert';
+ * import 'dart:async';
+ *
+ * main() {
+ * final file = new File('file.txt');
+ * Stream<List<int>> inputStream = file.openRead();
+ *
+ * inputStream
+ * .transform(UTF8.decoder) // Decode bytes to UTF8.
+ * .transform(new LineSplitter()) // Convert stream to individual lines.
+ * .listen((String line) { // Process results.
+ * print('$line: ${line.length} bytes');
+ * },
+ * onDone: () { print('File is now closed.'); },
+ * onError: (e) { print(e.toString()); });
+ * }
+ *
+ * ## Write to a file
*
- * * Use streaming: read the contents of the file from the [Stream]
- * this.[openRead]() and write to the file by writing to the [IOSink]
- * this.[openWrite]().
- * * Open the file for random access operations using [open].
+ * To write a string to a file, use the [writeAsString] method:
+ *
+ * import 'dart:io';
+ *
+ * void main() {
+ * final filename = 'file.txt';
+ * new File(filename).writeAsString('some content')
+ * .then((File file) {
+ * // Do something with the file.
+ * });
+ * }
+ *
+ * You can also write to a file using a [Stream]. Open the file with
+ * [openWrite], which returns a stream to which you can write data.
+ * Be sure to close the file with the [close] method.
+ *
+ * import 'dart:io';
+ *
+ * void main() {
+ * var file = new File('file.txt');
+ * var sink = file.openWrite();
+ * sink.write('FILE ACCESSED ${new DateTime.now()}\n');
+ *
+ * // Close the IOSink to free system resources.
+ * sink.close();
+ * }
+ *
+ * ## The use of Futures
+ *
+ * To avoid unintentional blocking of the program,
+ * several methods use a [Future] to return a value. For example,
+ * the [length] method, which gets the length of a file, returns a Future.
+ * Use `then` to register a callback function, which is called when
+ * the value is ready.
+ *
+ * import 'dart:io';
+ *
+ * main() {
+ * final file = new File('file.txt');
+ *
+ * file.length().then((len) {
+ * print(len);
+ * });
+ * }
+ *
+ * In addition to length, the [exists], [lastModified], [stat], and
+ * other methods, return Futures.
+ *
+ * ## Other resources
+ *
+ * * [Dart by Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)
+ * provides additional task-oriented code samples that show how to use
+ * various API from the Directory class and the related [File] class.
+ *
+ * * [I/O for Command-Line Apps](https://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html#ch03-dartio---file-and-socket-io-for-command-line-apps)
+ * a section from _A Tour of the Dart Libraries_
+ * covers files and directories.
+ *
+ * * [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),
+ * a tutorial about writing command-line apps, includes information
+ * about files and directories.
+
*/
abstract class File extends FileSystemEntity {
/**
« no previous file with comments | « sdk/lib/io/directory.dart ('k') | sdk/lib/io/file_system_entity.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698