Javascript 如何在node js中多次覆盖并向同一文件追加数据
我有一个“clients.txt”文件,其中有一个电子邮件列表。我试着运行一个发送电子邮件的程序,在这个程序中,我从文件中选择了一些要使用的电子邮件,在这种情况下,数字是2。在我使用这两封电子邮件之后,我想在没有它们的情况下覆盖“clients.txt”。问题是当我试着只运行一次代码时,一切都正常!但如果我做了一个循环,就会出问题。期待你们的帮助。谢谢我在下面添加代码。PS:对不起,我的英语不好Javascript 如何在node js中多次覆盖并向同一文件追加数据,javascript,node.js,Javascript,Node.js,我有一个“clients.txt”文件,其中有一个电子邮件列表。我试着运行一个发送电子邮件的程序,在这个程序中,我从文件中选择了一些要使用的电子邮件,在这种情况下,数字是2。在我使用这两封电子邮件之后,我想在没有它们的情况下覆盖“clients.txt”。问题是当我试着只运行一次代码时,一切都正常!但如果我做了一个循环,就会出问题。期待你们的帮助。谢谢我在下面添加代码。PS:对不起,我的英语不好 function readEmails(){ const fs = require('fs'
function readEmails(){
const fs = require('fs');
clients_list = fs.readFileSync('clients.txt', 'utf8').split('\n');
let filtered = clients_list.filter(function (el) {
return el != null && el != '';
});
return filtered
}
function dump_array(arr, file){
let fs = require('fs');
let file = fs.createWriteStream(file);
file.on('error', function(err) { /* error handling */ });
arr.forEach(function(v) { file.write(v + '\n'); });
file.end();
}
while_var = 0;
while (while_var < 2){
while_var ++;
let all_clients = readEmails();
let selected_clients = [];
if (all_clients.length > 0){
selected_clients = all_clients.splice(0,2);
dump_array(all_clients, 'clients.txt');
console.log(selected_clients);
}else{
console.log('No more clients')
}
}
函数readEmails(){
常数fs=要求('fs');
clients_list=fs.readFileSync('clients.txt','utf8').split('\n');
let filtered=clients\u list.filter(函数(el){
返回el!=null&&el!='';
});
返回过滤
}
函数转储_数组(arr,文件){
设fs=require('fs');
让file=fs.createWriteStream(文件);
on('error',function(err){/*错误处理*/});
arr.forEach(函数(v){file.write(v+'\n');});
file.end();
}
而_var=0;
while(while_var<2){
而_var++;
让所有_客户端=readEmails();
让选定的_客户端=[];
如果(所有_.length>0){
选定的_客户端=所有_客户端。拼接(0,2);
dump_数组(所有_客户端,'clients.txt');
console.log(选定的_客户端);
}否则{
console.log('不再有客户端')
}
}
const fs=require('fs');
函数readEmails(){
const clients_list=fs.readFileSync('clients.txt','utf8').split('\n');
const filtered=clients\u列表
//清除false、0和未定义
.过滤器(el=>!!el)
//删除额外的空格和符号\r\n
.map(el=>el.trim());
返回过滤;
}
函数转储_数组(arr,文件){
//这里你需要同步方法。
fs.writeFileSync(文件,arr.join('\n'));
//这是原始代码中的“已声明”错误
}
设_var=0时;
while(while_var++<2){
让所有_客户端=readEmails();
让选定的_客户端=[];
如果(所有_.length>0){
选定的_客户端=所有_客户端。拼接(0,2);
dump_数组(所有_客户端,'clients.txt');
console.log(选定的_客户端);
}否则{
console.log('不再有客户端')
}
}
在每个循环中,我希望从clients.txt
中获取两个客户端,并在没有它们的情况下覆盖文件。所以我需要把让所有的客户机=readEmails()代码>在循环中,因为每次都会有不同的clients.txt
内容。您提供的代码不好。我希望在每个循环中都有两个新的客户端,在让选定的\u clients=[]
中,并覆盖没有它们的“clients.txt”。@popescuandrei好的,我修复了它now@popescuandrei我修正了代码并在我的机器上检查,工作正常
const fs = require('fs');
function readEmails(){
const clients_list = fs.readFileSync('clients.txt', 'utf8').split('\n');
const filtered = clients_list
// clear false, 0 and undefined too
.filter(el => !!el)
// remove extra spaces and \r symbols
.map(el => el.trim());
return filtered;
}
function dump_array(arr, file){
// Here you need sync method.
fs.writeFileSync(file, arr.join('\n'));
// And here was 'already declared' error in orginal code
}
let while_var = 0;
while (while_var++ < 2){
let all_clients = readEmails();
let selected_clients = [];
if (all_clients.length > 0){
selected_clients = all_clients.splice(0,2);
dump_array(all_clients, 'clients.txt');
console.log(selected_clients);
}else{
console.log('No more clients')
}
}