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
Run Code Online (Sandbox Code Playgroud)
我试图抓住的部分是file:\\\C:\AlertLog\1_03-06-2013_1120-24.mp3- 最好摆脱这file:\\\部分.
很抱歉,我没有任何代码可以显示,只有几个小时的Node.js经验,似乎无法找到任何关于如何完成这样的事情的文档.任何帮助,将不胜感激.谢谢!
我通过向后读取文件直到读完最后一行来完成它:
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);
});
Run Code Online (Sandbox Code Playgroud)
像常规文件一样读取文件,将文件内容拆分为行,取最后一行,用逗号分割并取最后一部分.
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);
});
Run Code Online (Sandbox Code Playgroud)
您还可以使用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);
});
Run Code Online (Sandbox Code Playgroud)