diff --git a/lib/fs.js b/lib/fs.js index 730bc33..e6baae6 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -100,3 +100,34 @@ function readFile(path, callback) { stream.on("end", callback.bind(null, null, buffer)); } exports.readFile = readFile; + +function writeFile(path, content, encoding, callback) { + try { + if (!callback) { + callback = encoding; + encoding = undefined; + } + + encoding = String(encoding || "utf-8").toUpperCase(); + let fd = FileDescriptor(path); + let outputStream = FileOutputStream(); + let converter = ConverterStream(); + + outputStream.init(fd, 0x02 | 0x08 | 0x20, parseInt("0666"), + outputStream.DEFER_OPEN); + converter.charset = encoding; + let inputStream = converter.convertToInputStream(content.toString(encoding)); + let copier = StreamCopier(); + copier.init(inputStream, outputStream, null, sourceBuffered, sinkBuffered, + 0x8000, true, true); + copier.asyncCopy({ + onStartRequest: function onStartRequest(aRequest, aContext) {}, + onStopRequest: function onStopRequest(aRequest, aContext, aStatusCode) { + callback(null); + } + }, null); + } catch (error) { + callback(error); + } +} +exports.writeFile = writeFile;