node.js fs文件系统字符串的操作与存储修改
:nodejs :站长发布 :4月前(11-29) :351次浏览
var arr = ['list','fanwei','kkkk'];
var arrstr = JSON.stringify(arr);//转字符串
console.log(arrstr);
var arr = {id:'1',name:'马云',sex:'男'};
var arrstr = JSON.stringify(arr);//转字符串
console.log(arrstr);
var objectstr = '{"id":"1","name":"马云","sex":"男"}';
var objectarr = JSON.parse(objectstr);//字符串转换成对象
console.log(objectarr.name);//马云
//数组写入a.txt
var str= [
{id:1,name:"马云",sex:"男",img:''},
{id:2,name:"马化腾",sex:"男",img:''},
{id:3,name:"特朗普",sex:"男",img:''}
];
var strarr = JSON.stringify(str);
var fs = require('fs');
fs.writeFile('./A.TXT',strarr,function(err){
if(!err){
console.log("写入成功");
}else{
console.log("写入失败");
}
})
//数组文件追加写入数组
var str2 = {id:4,name:'普京大帝',sex:'男',img:''}
fs.readFile('./A.TXT','utf8',function(err,data){
if(!err){
var arr = JSON.parse(data);//字符转数组
arr.push(str2);//追加内容
var strarr = JSON.stringify(arr);//数组转字符
fs.writeFile('./A.TXT',strarr,function(err){
if(!err){
console.log("写入成功"+strarr);
}else{
console.log("写入失败"+err);
}
})
}else{
console.log("读取失败");
}
})
//删除文件中的ID为2的数组,并把马云改为马斯克
function readfiless(starnumber,endnumber,delayss){
fs.readFile('./A.TXT','utf8',function(err,data){
if(!err){
var prindata = "-------" + data + "-------";
//console.log(prindata);
//try抑制报错,错误的解析重写文件,写入频繁会导致报错无法读取信息
try{
var arr = JSON.parse(data);
if(!arr){
console.log("非数组");
}
var newArr = [];
for(let i=0;i<arr.length;i++){
if(arr[i].id != 2){
if(arr[i].name == "马云"){
arr[i].name = "马斯克";
}
newArr.push(arr[i]);
}
}
var getstrarr = JSON.stringify(newArr);
console.log("修改与删除:" + getstrarr);
fs.writeFile('./A.TXT',getstrarr,function(err){
if(!err){
console.log("删除id为2的数组,写入成功");
}else{
console.log("删除文件中id为2的失败");
}
})
}catch(e){
starnumber = starnumber + 1
console.log(starnumber);
if(starnumber < endnumber){
setTimeout(function(){
readfiless(starnumber);
},delayss)
}else{
console.error('解析 JSON 失败,停止写入');
}
//console.error('解析 JSON 失败:', e);
}
}else{
console.log("读取失败");
}
})
}
//readfiless:参数一:起始数值0,参数(整数);参数二:最大值,参数(整数);参数三:延迟毫秒,参数(整数);起始为0,结束为10,10次后停止结束写入
readfiless(0,10,1000)
版权声明:本文为云海网站长的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.xn--qiv211ar60a.com/114.html