1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 'use strict';
- const fs = require('fs');
- const pify = require('pify');
- const Buffer = require('safe-buffer').Buffer;
- const fsP = pify(fs);
- const fsReadP = pify(fs.read, {multiArgs: true});
- module.exports = (filepath, pos, len) => {
- const buf = Buffer.alloc(len);
- return fsP.open(filepath, 'r')
- .then(fd =>
- fsReadP(fd, buf, 0, len, pos)
- .then(readArgs => fsP.close(fd)
- .then(() => readArgs))
- )
- .then(readArgs => {
- // TODO: Use destructuring when Node.js 6 is target
- const bytesRead = readArgs[0];
- let buf = readArgs[1];
- if (bytesRead < len) {
- buf = buf.slice(0, bytesRead);
- }
- return buf;
- });
- };
- module.exports.sync = (filepath, pos, len) => {
- let buf = Buffer.alloc(len);
- const fd = fs.openSync(filepath, 'r');
- const bytesRead = fs.readSync(fd, buf, 0, len, pos);
- fs.closeSync(fd);
- if (bytesRead < len) {
- buf = buf.slice(0, bytesRead);
- }
- return buf;
- };
|