И где только удалось откопать такую форму применения fs.read ?..
Read читает байты, поэтому читать надо в буфер, и потом преобразовывать с помощью StringDecoder:
var fs = require('fs');
var fd = fs.openSync('./text', 'r');
var decoder = new (require('string_decoder').StringDecoder)();
var buf = new Buffer(10);
var list = [], str, bytesReaded;
while (bytesReaded = fs.readSync(fd, buf, 0, 10, null)) {
str = (list.pop() || '') + decoder.write(buf.slice(0, bytesReaded));
list = list.concat(str.split("\n"));
}
console.log(list);
А лучше для таких вещей использовать потоки, если указать кодировку, будет читаться нужное количество символов, а не байт:
var fs = require('fs');
var list = [];
fs.createReadStream('./text', {encoding: 'utf8'})
.on('readable', function() {
var str, chunk;
while (chunk = this.read(10)) {
str = ((list.pop() ||'') + chunk);
list = list.concat(str.split('\n'));
}
list[list.length-1] += (this.read() || '');
})
.on('end',function() {
console.log(list);
});