mozilla

Compare Revisions

File I/O

Change Revisions

Revision 503999:

Revision 503999 by wbamberg on

Revision 516521:

Revision 516521 by Noitidart on

Title:
File I/O
File I/O
Slug:
Mozilla/Add-ons/Code_snippets/File_I_O
Mozilla/Add-ons/Code_snippets/File_I_O
Tags:
"Files", "Extensions", "Add-ons", "Code snippets", "Streams"
"Files", "Extensions", "Add-ons", "Code snippets", "Streams"
Content:

Revision 503999
Revision 516521
tt458}
459</pre>
460    <h3 id="Writing_to_a_file" name="Writing_to_a_file">
461      Combined Example of Reading and Writing to File (Asyncyronu
 >s)
462    </h3>
463    <p>
464      This combines examples from the above "Reading" and "Writin
 >g" examples to create read and overwrite functions. This is a cop
 >y paste example, copy it, open scratchpad, set environment to "Br
 >owser", paste this and run it.
465    </p>
466    <pre class="brush: js">
467/*start - example usage*/
468  var file = FileUtils.getFile("Desk", ["rawr.txt"]); //this gets
 > file on desktop named 'rawr.txt'
469  //can also go: var file = FileUtils.File('C:\\Documents and Set
 >tings\\My User Name\\Desktop\\rawr.txt');
470 
471  overwriteFile(file, 'blah blah blah', function (status) {
472          Components.utils.reportError('overwrite status == ' + C
 >omponents.isSuccessCode(status));
473  });
474 
475  readFile(file, function (dataReadFromFile, status) {
476           Components.utils.reportError('file read status == ' + 
 >Components.isSuccessCode(status));
477           Components.utils.reportError('contents of file is:\n' 
 >+ dataReadFromFile);
478  });
479/*end - example usage*/
480 
481 
482 
483 
484 
485Components.utils.import("resource://gre/modules/FileUtils.jsm");
486Components.utils.import("resource://gre/modules/NetUtil.jsm");
487function overwriteFile(nsiFile, data, callback) {
488        //data is data you want to write to file
489        //if file doesnt exist it is created
490        var ostream = FileUtils.openSafeFileOutputStream(file)
491        var converter = Components.classes["@mozilla.org/intl/scr
 >iptableunicodeconverter"].createInstance(Components.interfaces.ns
 >IScriptableUnicodeConverter);
492        converter.charset = "UTF-8";
493        var istream = converter.convertToInputStream(data);
494        // The last argument (the callback) is optional.
495        NetUtil.asyncCopy(istream, ostream, function (status) {
496                if (!Components.isSuccessCode(status)) {
497                        // Handle error!
498                         Components.utils.reportError('error on w
 >rite isSuccessCode = ' + status);
499                        return;
500                }
501                // Data has been written to the file.
502                callback(status)
503        });
504}
505 
506function readFile(nsiFile, callback) {
507        //you must pass a callback like function(dataReadFromFile
 >, status) { }
508        //then within the callback you can work with the contents
 > of the file, it is held in dataReadFromFile
509        //callback gets passed the data as string
510        NetUtil.asyncFetch(file, function (inputStream, status) {
511                //this function is callback that runs on completi
 >on of data reading
512                if (!Components.isSuccessCode(status)) {
513                         Components.utils.reportError('error on f
 >ile read isSuccessCode = ' + status);
514                        return;
515                }
516                var data = NetUtil.readInputStreamToString(inputS
 >tream, inputStream.available());
517                callback(data, status);
518        });

Back to History