`options` may also include a `start` option to allow writing data at
some position past the beginning of the file. Modifying a file rather
than replacing it may require a `flags` mode of `r+` rather than the
-default mode `w`.
+default mode `w`. The `encoding` can be `'utf8'`, `'ascii'`, `binary`,
+or `'base64'`.
Like `ReadStream` above, if `fd` is specified, `WriteStream` will ignore the
`path` argument and will use the specified file descriptor. This means that no
--- /dev/null
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const fs = require('fs');
+const path = require('path');
+const stream = require('stream');
+const firstEncoding = 'base64';
+const secondEncoding = 'binary';
+
+const examplePath = path.join(common.fixturesDir, 'x.txt');
+const dummyPath = path.join(common.tmpDir, 'x.txt');
+
+const exampleReadStream = fs.createReadStream(examplePath, {
+ encoding: firstEncoding
+});
+
+const dummyWriteStream = fs.createWriteStream(dummyPath, {
+ encoding: firstEncoding
+});
+
+exampleReadStream.pipe(dummyWriteStream).on('finish', function() {
+ const assertWriteStream = new stream.Writable({
+ write: function(chunk, enc, next) {
+ const expected = new Buffer('xyz\n');
+ assert(chunk.equals(expected));
+ }
+ });
+ assertWriteStream.setDefaultEncoding(secondEncoding);
+ fs.createReadStream(dummyPath, {
+ encoding: secondEncoding
+ }).pipe(assertWriteStream);
+});