读取CSV文件的最后一行并提取一个值

新的Node.js,并试图从CSV文件的最后一行拉值。 这里是CSV:

Unit ID,Date,Time,Audio File Log File Created,3/6/2013,11:18:25 AM,file:\\\C:\Users\Ben\Documents\1_03-06-2013_1114-50.mp3 1,3/6/2013,11:20:24 AM,file:\\\C:\AlertLog\1_03-06-2013_1120-24.mp3 1,3/6/2013,11:20:39 AM,file:\\\C:\AlertLog\1_03-06-2013_1120-24.mp3 

我试图抓住的部分是file:\\\C:\AlertLog\1_03-06-2013_1120-24.mp3 – 最好摆脱file:\\\部分。

对不起,我没有任何代码显示,只有几个小时的Node.js的经验,似乎无法find任何文档如何完成这样的事情。 任何帮助,将不胜感激。 谢谢!

普通文件

像普通文件一样读取文件,将文件内容拆分成行,取最后一行,用逗号分隔并取最后一部分。

 var fs = require('fs'); // file system module fs.readFile('/path/to/file.csv', 'utf-8', function(err, data) { if (err) throw err; var lines = data.trim().split('\n'); var lastLine = lines.slice(-1)[0]; var fields = lastLine.split(','); var audioFile = fields.slice(-1)[0].replace('file:\\\\', ''); console.log(audioFile); }); 

文件系统模块文档

CSVparsing器

您也可以使用node-csv-parser模块。

 var fs = require('fs'); var csv = require('csv'); csv() .from.stream(fs.createReadStream('/path/to/file.csv')) .to.array(function(data, count) { var lastLine = data.slice(-1)[0]; var audioFile = lastLine.slice(-1)[0].replace('file:\\\\', ''); console.log(audioFile); }); 

我通过向后读取文件直到最后一行被读取:

 var fs = require('fs'); var path = require('path'); var fileName = path.join(__dirname, 'test.txt'); var readLastLine = function(name, callback) { fs.stat(name, function(err, stat) { fs.open(name, 'r', function(err, fd) { if(err) throw err; var i = 0; var line = ''; var readPrevious = function(buf) { fs.read(fd, buf, 0, buf.length, stat.size-buf.length-i, function(err, bytesRead, buffer) { if(err) throw err; line = String.fromCharCode(buffer[0]) + line; if (buffer[0] === 0x0a) { //0x0a == '\n' callback(line); } else { i++; readPrevious(new Buffer(1)); } }); } readPrevious(new Buffer(1)); }); }); } readLastLine(fileName, function(line) { console.log(line); });