Dart Documentationchrome.src.filesChromeFileEntry

ChromeFileEntry class

A convience class for reading and writing file content.

class ChromeFileEntry extends CrFileEntry {
 ChromeFileEntry.fromProxy(JsObject jsProxy) : super.fromProxy(jsProxy);

 /**
  * Return the contents of the file as a String.
  */
 Future<String> readText() {
   return file().then((File file) {
     Completer<String> completer = new Completer();

     var reader = new JsObject(context['FileReader']);
     reader['onload'] = (var event) {
       completer.complete(reader['result']);
     };
     reader['onerror'] = (var domError) {
       completer.completeError(domError);
     };
     reader.callMethod('readAsText', [file]);

     return completer.future;
   });
 }

 /**
  * Return the contents of the file as a byte array.
  */
 Future<ArrayBuffer> readBytes() {
   // readAsArrayBuffer
   return file().then((File file) {
     Completer<ArrayBuffer> completer = new Completer();

     var reader = new JsObject(context['FileReader']);
     reader['onload'] = (var event) {
       completer.complete(new ArrayBuffer.fromProxy(reader['result']));
     };
     reader['onerror'] = (var domError) {
       completer.completeError(domError);
     };
     reader.callMethod('readAsArrayBuffer', [file]);

     return completer.future;
   });
 }

 /**
  * Write out the given String to the file.
  */
 Future writeText(String text) {
   return _createWriter().then((ChromeObject _writer) {
     JsObject writer = _writer.jsProxy;

     Completer<FileEntry> completer = new Completer();

     JsObject blob = new JsObject(
         context['Blob'], [new JsObject.jsify([text])]);

     writer['onwrite'] = (var event) {
       writer['onwrite'] = null;
       writer.callMethod('truncate', [writer['position']]);
       completer.complete(this);
     };
     writer['onerror'] = (var event) {
       completer.completeError(event);
     };
     writer.callMethod(
         'write', [blob, new JsObject.jsify({'type': 'text/plain'})]);

     return completer.future;
   });
 }

 /**
  * Write out the given ArrayBuffer to the file.
  */
 Future writeBytes(ArrayBuffer data) {
   return _createWriter().then((ChromeObject _writer) {
     JsObject writer = _writer.jsProxy;

     Completer<FileEntry> completer = new Completer();

     // TODO: work around a bug on jsify, where toString() is called on
     // data.jsProxy, inserting '1, 2, 3, 4, ...' into the blob instead of a list
     // of ints
     JsObject args = new JsObject.jsify([null]);
     args[0] = data.jsProxy;
     JsObject blob = new JsObject(context['Blob'], [args]);

     writer['onwrite'] = (var event) {
       writer['onwrite'] = null;
       writer.callMethod('truncate', [writer['position']]);
       completer.complete(this);
     };
     writer['onerror'] = (var event) {
       completer.completeError(event);
     };
     writer.callMethod('write', [blob]);

     return completer.future;
   });
 }

 Future<ChromeObject> _createWriter() {
   var completer = new _ChromeCompleterWithError<ChromeObject>.oneArg((obj) => new ChromeObject.fromProxy(obj));
   jsProxy.callMethod('createWriter', [completer.callback, completer.errorCallback]);
   return completer.future;
 }
}

Extends

ChromeObject > CrEntry > CrFileEntry > ChromeFileEntry

Constructors

new ChromeFileEntry.fromProxy(JsObject jsProxy) #

Create a new instance of a ChromeObject, which delegates to the given JsObject proxy.

docs inherited from ChromeObject
ChromeFileEntry.fromProxy(JsObject jsProxy) : super.fromProxy(jsProxy);

Properties

final FileSystem filesystem #

inherited from Entry
final FileSystem filesystem

final String fullPath #

inherited from Entry
final String fullPath

final int hashCode #

inherited from CrFileEntry

Get a hash code for this object.

All objects have hash codes. Hash codes are guaranteed to be the same for objects that are equal when compared using the equality operator ==. Other than that there are no guarantees about the hash codes. They will not be consistent between runs and there are no distribution guarantees.

If a subclass overrides hashCode it should override the equality operator as well to maintain consistency.

docs inherited from Object
int get hashCode => jsProxy.hashCode;

final bool isDirectory #

inherited from Entry
final bool isDirectory

final bool isFile #

inherited from Entry
final bool isFile

final jsProxy #

inherited from ChromeObject
final dynamic jsProxy

final String name #

inherited from Entry
final String name

Operators

bool operator ==(Object other) #

inherited from CrFileEntry

The equality operator.

The default behavior for all Objects is to return true if and only if this and other are the same object.

Override this method to specify a different equality relation on a class. The overriding method must still be an equivalence relation. That is, it must be:

  • Total: It must return a boolean for all arguments. It should never throw or return null.

  • Reflexive: For all objects o, o == o must be true.

  • Symmetric: For all objects o1 and o2, o1 == o2 and o2 == o1 must either both be true, or both be false.

  • Transitive: For all objects o1, o2, and o3, if o1 == o2 and o2 == o3 are true, then o1 == o3 must be true.

The method should also be consistent over time, so equality of two objects should not change over time, or at least only change if one of the objects was modified.

If a subclass overrides the equality operator it should override the hashCode method as well to maintain consistency.

docs inherited from Object
bool operator==(Object other) =>
   other is CrDirectoryEntry && other.jsProxy == jsProxy;

Methods

Future<Entry> copyTo(DirectoryEntry parent, {String name}) #

inherited from CrEntry
Future<Entry> copyTo(DirectoryEntry parent, {String name}) {
 var completer = new _ChromeCompleterWithError<Entry>.oneArg((obj) => new CrEntry.fromProxy(obj));
 jsProxy.callMethod('copyTo', [(parent as ChromeObject).jsProxy, name, completer.callback, completer.errorCallback]);
 return completer.future;
}

Future<FileWriter> createWriter() #

inherited from CrFileEntry
Future<FileWriter> createWriter() {
 // TODO:

 throw new UnimplementedError('FileEntry.createWriter');
}

Future<File> file() #

inherited from CrFileEntry
Future<File> file() {
 var completer = new _ChromeCompleterWithError<File>.oneArg(selfConverter);
 jsProxy.callMethod('file', [completer.callback, completer.errorCallback]);
 return completer.future;
}

Future<Metadata> getMetadata() #

inherited from CrEntry
Future<Metadata> getMetadata() {
 var completer = new _ChromeCompleterWithError<Metadata>.oneArg((obj) => new CrMetadata.fromProxy(obj));
 jsProxy.callMethod('getMetadata', [completer.callback, completer.errorCallback]);
 return completer.future;
}

Future<Entry> getParent() #

inherited from CrEntry
Future<Entry> getParent() {
 var completer = new _ChromeCompleterWithError<Entry>.oneArg((obj) => new CrDirectoryEntry.fromProxy(obj));
 jsProxy.callMethod('getParent', [completer.callback, completer.errorCallback]);
 return completer.future;
}

Future<Entry> moveTo(DirectoryEntry parent, {String name}) #

inherited from CrEntry
Future<Entry> moveTo(DirectoryEntry parent, {String name}) {
 var completer = new _ChromeCompleterWithError<Entry>.oneArg((obj) => new CrEntry.fromProxy(obj));
 jsProxy.callMethod('moveTo', [(parent as ChromeObject).jsProxy, name, completer.callback, completer.errorCallback]);
 return completer.future;
}

Future<ArrayBuffer> readBytes() #

Return the contents of the file as a byte array.

Future<ArrayBuffer> readBytes() {
 // readAsArrayBuffer
 return file().then((File file) {
   Completer<ArrayBuffer> completer = new Completer();

   var reader = new JsObject(context['FileReader']);
   reader['onload'] = (var event) {
     completer.complete(new ArrayBuffer.fromProxy(reader['result']));
   };
   reader['onerror'] = (var domError) {
     completer.completeError(domError);
   };
   reader.callMethod('readAsArrayBuffer', [file]);

   return completer.future;
 });
}

Future<String> readText() #

Return the contents of the file as a String.

Future<String> readText() {
 return file().then((File file) {
   Completer<String> completer = new Completer();

   var reader = new JsObject(context['FileReader']);
   reader['onload'] = (var event) {
     completer.complete(reader['result']);
   };
   reader['onerror'] = (var domError) {
     completer.completeError(domError);
   };
   reader.callMethod('readAsText', [file]);

   return completer.future;
 });
}

Future remove() #

inherited from CrEntry
Future remove() {
 var completer = new _ChromeCompleterWithError<Metadata>.noArgs();
 jsProxy.callMethod('remove', [completer.callback, completer.errorCallback]);
 return completer.future;
}

JsObject toJs() #

inherited from ChromeObject
JsObject toJs() => jsProxy;

String toString() #

inherited from CrEntry

Returns a string representation of this object.

docs inherited from Object
String toString() => name;

String toUrl() #

inherited from CrEntry
String toUrl() => this.jsProxy.callMethod('toURL');

Future writeBytes(ArrayBuffer data) #

Write out the given ArrayBuffer to the file.

Future writeBytes(ArrayBuffer data) {
 return _createWriter().then((ChromeObject _writer) {
   JsObject writer = _writer.jsProxy;

   Completer<FileEntry> completer = new Completer();

   // TODO: work around a bug on jsify, where toString() is called on
   // data.jsProxy, inserting '1, 2, 3, 4, ...' into the blob instead of a list
   // of ints
   JsObject args = new JsObject.jsify([null]);
   args[0] = data.jsProxy;
   JsObject blob = new JsObject(context['Blob'], [args]);

   writer['onwrite'] = (var event) {
     writer['onwrite'] = null;
     writer.callMethod('truncate', [writer['position']]);
     completer.complete(this);
   };
   writer['onerror'] = (var event) {
     completer.completeError(event);
   };
   writer.callMethod('write', [blob]);

   return completer.future;
 });
}

Future writeText(String text) #

Write out the given String to the file.

Future writeText(String text) {
 return _createWriter().then((ChromeObject _writer) {
   JsObject writer = _writer.jsProxy;

   Completer<FileEntry> completer = new Completer();

   JsObject blob = new JsObject(
       context['Blob'], [new JsObject.jsify([text])]);

   writer['onwrite'] = (var event) {
     writer['onwrite'] = null;
     writer.callMethod('truncate', [writer['position']]);
     completer.complete(this);
   };
   writer['onerror'] = (var event) {
     completer.completeError(event);
   };
   writer.callMethod(
       'write', [blob, new JsObject.jsify({'type': 'text/plain'})]);

   return completer.future;
 });
}