30 lines
774 B
Java
30 lines
774 B
Java
var fs = require("fs"),
|
|
decode = require("./decode");
|
|
|
|
module.exports = function(filename, options) {
|
|
if (fs.statSync(filename).isFile()) {
|
|
return fs.readFileSync(filename, options);
|
|
} else {
|
|
var fd = fs.openSync(filename, options && options.flag || "r"),
|
|
decoder = decode(options);
|
|
|
|
while (true) { // eslint-disable-line no-constant-condition
|
|
try {
|
|
var buffer = new Buffer(bufferSize),
|
|
bytesRead = fs.readSync(fd, buffer, 0, bufferSize);
|
|
} catch (e) {
|
|
if (e.code === "EOF") break;
|
|
fs.closeSync(fd);
|
|
throw e;
|
|
}
|
|
if (bytesRead === 0) break;
|
|
decoder.push(buffer.slice(0, bytesRead));
|
|
}
|
|
|
|
fs.closeSync(fd);
|
|
return decoder.value();
|
|
}
|
|
};
|
|
|
|
var bufferSize = 1 << 16;
|