简体   繁体   English

fs.readFile只读2个第一个符号

[英]fs.readFile read only 2 first symbols

I try to use sdk fs like that: 我尝试像这样使用sdk fs:

  var fs = require('sdk/io/fs');

  fs.readFile(filepath, 'utf-8', function (error, data) {
    if (components.isSuccessCode(error)) {
      var lines = data.toString().split(/[\r\n]+/);
      for (var i = 0; i < lines.length; i++) {
        listener.process(lines[i]);
      }
    }
    else {
      callback({error: error});
    }
  }

but i only get 2 first symbols of file(2 mb). 但我只得到file(2 mb)的2个第一个符号。 Why i get such a weird behaviour? 为什么我会有如此奇怪的行为?

Declaration of readFile from sdk: sdk中的readFile声明:

function readFile(path, encoding, callback) {
    if (isFunction(encoding)) {
      callback = encoding
      encoding = null
    }

    let buffer = null;
    try {
      let readStream = new ReadStream(path);
      readStream.on("data", function(data) {
        if (!buffer){
          buffer = data;
        }
        else{
          buffer = Buffer.concat([buffer, data], 2);
        }
      });

      readStream.on("error", function onError(error) {
        callback(error);
      });

      readStream.on("end", function onEnd() {
        // Note: Need to destroy before invoking a callback
        // so that file descriptor is released.
        readStream.destroy();
        callback(null, buffer);
      });
    }
    catch (error) {
      setTimeout(callback, 0, error);
    }
  };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM