2016-12-08 5 views
0

Ищете синхронный метод в Node.js, который похож на Linux-головку.Как я могу синхронно имитировать команду unix head в Node.js?

Я знаю, что это вообще плохая идея делать синхронные вещи в узле, но у меня есть действующий прецедент. Необходимо прочитать первые несколько строк файла.

+1

Я хотел бы видеть действительный прецедент для синхронного ввода-вывода в сервере node.js где угодно, кроме запуска. – jfriend00

ответ

0
// Returns the first few lines of the file. 
// file: the file to read. 
// lines: the number of lines to return. 
// maxBuffer: the maximum number of bytes to read from 
//   the beginning of the file. We default to 
//   1k per line requested. 
function head(file, lines, maxBuffer) { 
    lines = lines || 10; 
    maxBuffer = maxBuffer || lines * 1000; 
    var stats = fs.statSync(file); 
    var upToMax = Math.min(maxBuffer, stats.size); 
    var fileDescriptor = fs.openSync(file, 'r'); 
    var buffer = Buffer.alloc(upToMax); 
    fs.readSync(fileDescriptor, buffer, 0, upToMax, 0); 
    var lineA = buffer.toString('utf8').split(/\r?\n/); 
    lineA = lineA.slice(0, Math.min(lines, lineA.length)); 
    // might be nicer just to return the array and let the 
    // caller do whatever with it. 
    return lineA.join('\n'); 
} 
+0

Вы также можете использовать https://www.npmjs.com/package/head –

 Смежные вопросы

  • Нет связанных вопросов^_^