我是新來的node.js,所以忍受着我。我需要一個返回文件行長度的函數。 我希望能像做nodejs文件行數返回undefined
file1 = line_length_func('file');
file2 = line_length_function('file');
if (file1 === file2) { console.log('same number of lines!');}
我一直在尋找到各種各樣的方式來做到這一點,與child.exec(貓文件| WC-1),但產卵子實例變得有點複雜。我不知道如何將變量從我的孩子傳遞給父母或如果是這樣做的好做法...
所以我試了這個 - 我看到fs.open返回的行數:
function get_lines(file) {
var lines = fs.open(file, 'r', function(err, fd) {
var lines = fd;
});
}
a = get_lines('file.txt');
console.log(a);
但我只是一直未定義。
我想接下來的事情是:(感謝Andrey Sidorov's post)
function get_line_count(file) {
var count = 0;
fs.createReadStream(file)
.on('data', function(chunk) {
for (var i = 0; i < chunk.length; i++)
if (chunk[i] == 10) count++;
})
.on('end', function() {
return count;
});
}
var file1_lines = get_line_count('test.txt');
console.log(file1_lines);
,但我得到了相同的結果。未定義。
我不習慣節點,所以任何幫助將是美好的!謝謝!
更新
行數似乎是現在的工作,但我還是不能寫比較這兩個功能。
function get_line_count(file, cb) {
var count = 0;
fs.createReadStream(file)
.on('data', function(chunk) {
for (var i = 0; i < chunk.length; i++)
if (chunk[i] == 10) count++;
})
.on('end', function() {
cb(null, count);
})
.once('error', cb);
}
var file1 = get_line_count('test.txt', function(err, lines) {
if (err) return; // todo
return lines;
});
var file2 = get_line_count('test2.txt', function(err, lines) {
if (err) return; //todo
return lines;
});
function same_line_length(len1, len2) {
return len1===len2;
}
console.log(same_line_length(file1, file2));
這總是返回true ...
你應該在回調/異步執行讀了起來:HTTP://堆棧溢出。com/a/4506306/3263412 – marionebl
嗯,我不習慣它是如何工作的。感謝您的鏈接,我會在嘗試解決這個問題時檢查一下。任何建議我的功能?我錯過了什麼? – Ptrkcon