node js read file间歇性地工作

时间:2014-07-18 17:24:43

标签: node.js

我有一个简单的函数来读取一个似乎间歇性工作的文件。如果你传入一个位置,它将从该位置读取,否则它将读取最后10240个字节。它大部分时间都有效,但有时它会像这样的unicode characeters一起返回。

我无法弄清楚为什么它有时会失败,但不是一直都会失败。

  

" \ u0000的\ u0000的\ u0000的\ u0000的\ u0010 |#\ u0000的\ u0000的\ u0000的\ u0000p = S / \ u0000的\ u0000l \ U0002 \ u0000的\ u0000的\ u0000的\ u0000的\ u0000的\ u0000的\ u0000的\ u0000的\ u0000的\ U0

var fs = require('fs');
LogReader.prototype.readFile = function(res, position) {
    var path = this.logPath;
    fs.stat(path, function(error, stats) {
        fs.open(path, 'r', function(error, fd) {
            var tell, bufferLength, buffer;
            if (!!position) {
                tell = parseInt(position, 10);

            } else {
                tell = stats.size - 10240;
            }

            bufferLength = stats.size - tell;
            if (bufferLength === 0) {
                res.json({
                    tell: tell,
                    content: ''
                });
                return;
            }

            buffer = new Buffer(bufferLength);

            try {
                fs.read(fd, buffer, 0, bufferLength, tell, function(error, bytesRead, buffer) {
                    var data = buffer.toString('utf8', 0, buffer.length);

                    res.json({
                        tell: stats.size,
                        content: data.replace(/\r\n/g, '\n')
                    });
                });
            }
            catch(err) {
                // do nothing
            }
            finally {
                fs.close(fd);
            }
        });
    });
};

0 个答案:

没有答案