Returns a new ReadStream object (See `Readable Stream`).
-`options` is an object with the following defaults:
+`options` is an object or string with the following defaults:
{ flags: 'r',
encoding: null,
fs.createReadStream('sample.txt', {start: 90, end: 99});
+If `options` is a string, then it specifies the encoding.
## Class: fs.ReadStream
Returns a new WriteStream object (See `Writable Stream`).
-`options` is an object with the following defaults:
+`options` is an object or string with the following defaults:
{ flags: 'w',
encoding: null,
`path` argument and will use the specified file descriptor. This means that no
`open` event will be emitted.
+If `options` is a string, then it specifies the encoding.
## Class: fs.WriteStream
if (!(this instanceof ReadStream))
return new ReadStream(path, options);
+ if (options === undefined)
+ options = {};
+ else if (typeof options === 'string')
+ options = { encoding: options };
+ else if (options === null || typeof options !== 'object')
+ throw new TypeError('options must be a string or an object');
+
// a little bit bigger buffer and water marks by default
- options = Object.create(options || {});
+ options = Object.create(options);
if (options.highWaterMark === undefined)
options.highWaterMark = 64 * 1024;
if (!(this instanceof WriteStream))
return new WriteStream(path, options);
- options = options || {};
+ if (options === undefined)
+ options = {};
+ else if (typeof options === 'string')
+ options = { encoding: options };
+ else if (options === null || typeof options !== 'object')
+ throw new TypeError('options must be a string or an object');
+
+ options = Object.create(options);
Writable.call(this, options);
--- /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 encoding = 'base64';
+
+const example = path.join(common.fixturesDir, 'x.txt');
+const assertStream = new stream.Writable({
+ write: function(chunk, enc, next) {
+ const expected = new Buffer('xyz');
+ assert(chunk.equals(expected));
+ }
+});
+assertStream.setDefaultEncoding(encoding);
+fs.createReadStream(example, encoding).pipe(assertStream);
--- /dev/null
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const fs = require('fs');
+const path = require('path');
+
+const example = path.join(common.fixturesDir, 'x.txt');
+
+assert.doesNotThrow(function() {
+ fs.createReadStream(example, undefined);
+});
+assert.doesNotThrow(function() {
+ fs.createReadStream(example, 'utf8');
+});
+assert.doesNotThrow(function() {
+ fs.createReadStream(example, {encoding: 'utf8'});
+});
+
+assert.throws(function() {
+ fs.createReadStream(example, null);
+}, /options must be a string or an object/);
+assert.throws(function() {
+ fs.createReadStream(example, 123);
+}, /options must be a string or an object/);
+assert.throws(function() {
+ fs.createReadStream(example, 0);
+}, /options must be a string or an object/);
+assert.throws(function() {
+ fs.createReadStream(example, true);
+}, /options must be a string or an object/);
+assert.throws(function() {
+ fs.createReadStream(example, false);
+}, /options must be a string or an object/);
--- /dev/null
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const fs = require('fs');
+const path = require('path');
+
+const example = path.join(common.tmpDir, 'dummy');
+
+assert.doesNotThrow(function() {
+ fs.createWriteStream(example, undefined);
+});
+assert.doesNotThrow(function() {
+ fs.createWriteStream(example, 'utf8');
+});
+assert.doesNotThrow(function() {
+ fs.createWriteStream(example, {encoding: 'utf8'});
+});
+
+assert.throws(function() {
+ fs.createWriteStream(example, null);
+}, /options must be a string or an object/);
+assert.throws(function() {
+ fs.createWriteStream(example, 123);
+}, /options must be a string or an object/);
+assert.throws(function() {
+ fs.createWriteStream(example, 0);
+}, /options must be a string or an object/);
+assert.throws(function() {
+ fs.createWriteStream(example, true);
+}, /options must be a string or an object/);
+assert.throws(function() {
+ fs.createWriteStream(example, false);
+}, /options must be a string or an object/);