5

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を数時間使用しただけで、このようなことを実現する方法に関するドキュメントが見つからないようです。どんな助けでもいただければ幸いです。ありがとう!

4

2 に答える 2

9

通常のファイル

通常のファイルのようにファイルを読み取り、ファイルの内容を行に分割し、最後の行を取得し、コンマで分割して最後の部分を取得します。

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);
});

ファイルシステムモジュールのドキュメント

CSVパーサー

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);
  });
于 2013-03-06T19:48:30.797 に答える
8

最後の行が読み取られるまでファイルを逆方向​​に読み取ることで、それを実行しました。

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);
});
于 2014-03-17T20:42:22.747 に答える