যদি আপনি চূড়ান্ত ডেটাটিকে একটি অ্যারেতে ফিট করতে পারেন তবে আপনি কি এটি স্ট্রিংয়ে ফিট করতে এবং এটির মতো বিভক্ত করতে পারবেন না, যেমনটি পরামর্শ দেওয়া হয়েছে? যে কোনও ক্ষেত্রে আপনি যদি একবারে ফাইলটি এক লাইনে প্রক্রিয়া করতে চান তবে আপনিও এরকম কিছু চেষ্টা করতে পারেন:
var fs = require('fs');
function readLines(input, func) {
var remaining = '';
input.on('data', function(data) {
remaining += data;
var index = remaining.indexOf('\n');
while (index > -1) {
var line = remaining.substring(0, index);
remaining = remaining.substring(index + 1);
func(line);
index = remaining.indexOf('\n');
}
});
input.on('end', function() {
if (remaining.length > 0) {
func(remaining);
}
});
}
function func(data) {
console.log('Line: ' + data);
}
var input = fs.createReadStream('lines.txt');
readLines(input, func);
সম্পাদনা: ( ফপকিন্সের মন্তব্যের জবাবে ) আমি মনে করি (অন্তত নতুন সংস্করণে) সাবস্ট্রিং ডেটা অনুলিপি করে না তবে একটি বিশেষ স্লাইসড্রিং অবজেক্ট তৈরি করে (ভি 8 উত্স কোডটিতে তাত্ক্ষণিক দৃষ্টি থেকে)। যে কোনও ক্ষেত্রে এখানে একটি পরিবর্তন রয়েছে যা উল্লিখিত সাবস্ট্রিং এড়ায় (একটি ফাইলে পরীক্ষিত বেশ কয়েকটি মেগাবাইটের মূল্য "সমস্ত কাজ এবং কোনও খেলা জ্যাককে নিস্তেজ ছেলে" করে তোলে):
function readLines(input, func) {
var remaining = '';
input.on('data', function(data) {
remaining += data;
var index = remaining.indexOf('\n');
var last = 0;
while (index > -1) {
var line = remaining.substring(last, index);
last = index + 1;
func(line);
index = remaining.indexOf('\n', last);
}
remaining = remaining.substring(last);
});
input.on('end', function() {
if (remaining.length > 0) {
func(remaining);
}
});
}