2016-03-28 5 views
1

Извините за такой тупой вопрос,NodeJS, fs.readFileSync, строковое чтение и работа. Как?

Как я могу в NodeJS читать из строки строки по строкам какое-то значение, например - url, и выполнять операцию с каждой строкой в ​​конце концов?

var contents = fs.readFileSync('test.txt', 'utf8'); 

И что тогда?

Это необходимо для проверки браузера и тестирования селена. Я хочу запускать некоторые ссылки по одному, из файла и делать с ними что-то.

Измененный код ниже: от

console.log(lines[i++]) 

в

line = (lines[i++]) 
driver.get(line); 
driver.getCurrentUrl() 
       .then(function(currentUrl) { 
        console.log(currentUrl); 

Но это работает один раз.

И

var str=fs.readFileSync('test.txt'); 
str.split(/\n/).forEach(function(line){}) 


C:\nodejstest>node test1.js 
C:\nodejstest\test1.js:57 
str.split(/\n/).forEach(function(line){ 
    ^

TypeError: str.split is not a function 
    at Object.<anonymous> (C:\nodejstest\test1.js:57:5) 
    at Module._compile (module.js:413:34) 
    at Object.Module._extensions..js (module.js:422:10) 
    at Module.load (module.js:357:32) 
    at Function.Module._load (module.js:314:12) 
    at Function.Module.runMain (module.js:447:10) 
    at startup (node.js:142:18) 
    at node.js:939:3 

работает! Much thanx!

+0

что вы подразумеваете под строкой? ??? это одно слово за раз или по одной строке за раз! – vkstack

+0

одна строка в момент времени – Boris

ответ

2

Другим (более простым) методом было бы считывание всего файла в буфер, преобразование его в строку, разделение строки на вашем терминаторе строк для создания массива строк, а затем итерацию по массиву, как в :

var buf=fs.readFileSync(filepath); 

buf.toString().split(/\n/).forEach(function(line){ 
    // do something here with each line 
}); 
+0

Много спасибо. – Boris

0

читать файл с читаемым потоком и выполнять свою работу, когда вы найдете '\n'.

var fs=require('fs'); 
var readable = fs.createReadStream("data.txt", { 
    encoding: 'utf8', 
    fd: null 
}); 
var lines=[];//this is array not a string!!! 
readable.on('readable', function() { 
    var chunk,tmp=''; 
    while (null !== (chunk = readable.read(1))) { 
     if(chunk==='\n'){ 
      lines.push(tmp); 
      tmp=''; 
     // this is how i store each line in lines array 
     }else 
      tmp+=chunk; 
    } 
}); 
// readable.on('end',function(){ 
//  console.log(lines);  
// }); 
readable.on('end',function(){ 
    var i=0,len=lines.length; 
    //lines is #array not string 
    while(i<len) 
     console.log(lines[i++]); 
}); 

Посмотрите, подходит ли это для вас.

+0

'['http: //url.com \ r', 'http: //url2.su \ r']' – Boris

+0

Что вы хотите спросить? – vkstack

+0

Как сделать вывод похожим на http://url.com \ n http://url2.su? и что-то делать с ними один за другим? – Boris

 Смежные вопросы

  • Нет связанных вопросов^_^