NodeJS, fs.readFileSync 逐字串读取,运行。如何?
NodeJS, fs.readFileSync string-by-string reading, and operating. How?
抱歉问了这么愚蠢的问题,
我如何在 NodeJS 中逐个字符串地从文件中读取一些值,例如 - url,并最终对每个字符串进行操作?
var contents = fs.readFileSync('test.txt', 'utf8');
然后呢?
需要browserstack+selenium测试。
我想要 运行 一些链接,从文件中一个接一个地处理它们。
更改了以下代码:
来自
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
有效!
非常感谢!
使用可读流读取文件,找到 '\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++]);
});
看看它是否适合你。
另一种(更简单的)方法是将整个文件读入缓冲区,将其转换为字符串,在行终止符处拆分字符串以生成行数组,然后遍历数组,如在:
var buf=fs.readFileSync(filepath);
buf.toString().split(/\n/).forEach(function(line){
// do something here with each line
});
抱歉问了这么愚蠢的问题,
我如何在 NodeJS 中逐个字符串地从文件中读取一些值,例如 - url,并最终对每个字符串进行操作?
var contents = fs.readFileSync('test.txt', 'utf8');
然后呢?
需要browserstack+selenium测试。 我想要 运行 一些链接,从文件中一个接一个地处理它们。
更改了以下代码: 来自
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
有效! 非常感谢!
使用可读流读取文件,找到 '\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++]);
});
看看它是否适合你。
另一种(更简单的)方法是将整个文件读入缓冲区,将其转换为字符串,在行终止符处拆分字符串以生成行数组,然后遍历数组,如在:
var buf=fs.readFileSync(filepath);
buf.toString().split(/\n/).forEach(function(line){
// do something here with each line
});