Compare Revisions

File I/O

Change Revisions

Revision 39493:

Revision 39493 by sdwilsh on

Revision 39494:

Revision 39494 by sdwilsh on

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

Revision 39493
Revision 39494
n554      This function returns a basic stream listener that copies an554      This function copies all of the data from an input stream t
>ll of the data from an input stream to a file. Takes an {{ interf>o a file asyncronously.  It takes an {{ interface("nsIInputS
>ace("nsIFile") }} as an argument, which is assumed to be open and>tream") }} and an {{ interface("nsIFile") }} as arguments, and us
> created; depending on what you're doing, you might prefer to cre>es <a href="/en/JavaScript_code_modules/NetUtil.jsm" title="en/Ja
>ate the file in onStartRequest and close it in onStopRequest.>vaScript_code_modules/NetUtil.jsm">NetUtil.jsm</a>.
n557function StreamToFile(file)n557function StreamToFile(stream, file)
t561    var buffer = Components.classes["@mozilla.org/network/bufferet
>d-output-stream;1"]. 
562                 createInstance(Components.interfaces.nsIBuffered
>OutputStream); 
563    output.init(file, 0x02 | 0x08 | 0x20, 0664, null);561    output.init(file, 0x02 | 0x08 | 0x20, 0664, output.DEFER_OPEN
 >);
564    buffer.init(output, 8192);562    Components.utils.import("resource://gre/modules/NetUtil.jsm")
 >;
565 563    NetUtil.asyncCopy(stream, output);
566    return {
567        onStartRequest: function(request, context) { },
568 
569        onDataAvailable: function onDataAvailable(request, contex
>t, stream, offset, count) 
570        {
571            while(count &gt; 0)
572                count -= buffer.writeFrom(stream, count);
573        },
574 
575        onStopRequest: function(request, context) { }
576    };

Back to History