您的位置:首页 > 科技 > 能源 > 网络营销课程收获_招商服务平台_排名优化培训_重庆广告公司

网络营销课程收获_招商服务平台_排名优化培训_重庆广告公司

2024/11/17 23:50:35 来源:https://blog.csdn.net/weixin_43631940/article/details/142987446  浏览:    关键词:网络营销课程收获_招商服务平台_排名优化培训_重庆广告公司
网络营销课程收获_招商服务平台_排名优化培训_重庆广告公司

2.2FS模块(File system)

2.2.1创建文件对象
let fs=require('fs')
2.2.2写入文件:writeFile函数
fs.writeFile(file,data,options,callback)// file:文件名;// data:待写入的数据;// option:选项(可选):{encoding:'',mode:'',flag:''}//encoding(string)可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。//mode(Number) 文件读写权限,默认值 438//flag(String)默认值 ‘w':重新写入,会把文件原内容删除,‘a'追加写入// callback:写入回调

示例:

fs.writeFile('./file.txt','I love sally',err=>{//如果写入失败,err值是一个错误对象,如果写入成功,err为null//文件如果不存在,会创建文件if (err){console.log(err)}else{console.log('写入成功')}})
2.2.3FS模块的同步和异步

writeFile函数是一个异步函数,在执行到该函数里,会将该函数压入一个新的进程,等整个js代码执行完毕后,再执行writeFile.

let fs=require('fs')fs.writeFile('./file.txt','I love sally',err=>{if (err){console.log(err)}else{console.log('写入成功')}})
console.log('Js代码执行完毕')

输出:

//这里可以看到,所有Js代码执行完毕后才会执行writeFile
Js代码执行完毕
写入成功

.同步写入文件函数writeFileSync()

fs.writeFile(file,data,options)// file:文件名;// data:待写入的数据;// option:选项(可选); {encoding:'',mode:'',flag:''}//encoding(string)可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。//mode(Number) 文件读写权限,默认值 438//flag(String)默认值 ‘w':重新写入,会把文件原内容删除,‘a'追加写入

示例:

#当Js执行到writeFileSync函数里,会等待文件写入完成以后再执行后面的代码
try{
fs.writeFileSync('./座右铭.txt', '三人行,必有我师焉。');
}catch(e){
console.log(e);
}console.log('Js代码执行完毕')
2.2.4异步追加写入(appendFile函数)
fs.appendFile(file,data,options,callback)// file:文件名;// data:待写入的数据;// option:选项(可选); {encoding:'',mode:'',flag:''}//encoding(string)可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。//mode(Number) 文件读写权限,默认值 438//flag(String)默认值 ‘w':重新写入,会把文件原内容删除,‘a'追加写入// callback:写入回调	

示例:

let fs=require('fs')
//\r\n代表换行
fs.appendFile('./file.txt','\r\nI love ying too',err=>{if (err){console.log(err)}else{console.log('写入成功')}
})
console.log('Js代码执行完毕')

输出:

//appendFile函数也是异步函数
Js代码执行完毕
写入成功
2.2.5同步追加写入appendFileSync()函数
fs.appendFileSync(file,data,options)// file:文件名;// data:待写入的数据;// option:选项(可选); {encoding:'',mode:'',flag:''}//encoding(string)可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。//mode(Number) 文件读写权限,默认值 438//flag(String)默认值 ‘w':重新写入,会把文件原内容删除,‘a'追加写入

示例:

try{fs.appendFileSync('./file.txt','I love me too')}catch(e){console.log(e)}
2.2.6流式写入createWriteStream()
createWriteStream(file,options)
/**
file:文件名;
option:选项(可选): {encoding:'',mode:'',flag:''}encoding(string)可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。mode(Number) 文件读写权限,默认值 438flag(String)默认值 ‘w':重新写入,会把文件原内容删除,‘a'追加写入
**/

示例:

let fs=require('fs')
//创建写入流对象,flags:'a'代表是追加写入
let ws=fs.createWriteStream('./file.txt',{flags:'a'})
ws.write('I love 1\r\n');
ws.write('I love 2\r\n');
ws.write('I love 3\r\n');
ws.write('I love 4\r\n');
//关闭ws,也可以不写
ws.close()
2.2.7异步读取文件readFile()函数
fs.readFile(path,[options],callback)
//参数解读
//参数1:必选参数,字符串,表示文件的路径
//参数2:可选参数,表示以什么编码格式来读取文件
//参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果

示例:

let fs=require('fs')
//err为错误信息,没有错误的时候为null,data为文件内容(Buffer)
fs.readFile('./file.txt',(err,data)=>{if(err){console.log(err)}else{//将Buffer转换成字符串console.log('读取成功',data.toString())}
})
2.2.8同步读取文件readFileSync()函数
fs.readFile(path,[options])
//参数解读
//参数1:必选参数,字符串,表示文件的路径
//参数2:可选参数,表示以什么编码格式来读取文件

示例:

let fs=require('fs')
try{//data为读取到的文件内容(Buffer)var data=fs.readFileSync('./file.txt')}catch(e){console.log(e)}
//将Buffer转换成字符串
console.log(data.toString())
2.2.9流式读取createReadStream()函数

示例

let fs=require('fs')
//获取流式读取对象
let rs=fs.createReadStream('./1.mp4')rs.on('data',chunk=>{//打印每次读取的长度(65535字节)console.log(chunk.length)
})
rs.on('end',()=>{//读取结束以后执行的代码console.log('读取完毕')
})
2.2.10复制文件

1)readFileSync方式

//复制1.mp4,新文件为2.mp4
let fs=require('fs')let data=fs.readFileSync('./1.mp4')fs.writeFileSync('./2.mp4',data)

2)流式方法

let fs=require('fs')
let rs =fs.createReadStream('./1.mp4')
let ws=fs.createWriteStream('./3.mp4')rs.on('data',(chunk)=>{//使用流式读取,读取一部分,再用流式写入,写入一部分ws.write(chunk)})
2.2.11重命名和移动文件
//异步方式移动文件
rename(oldPath,newPath,callback)
//同步方式移动文件
renameSync(oldPath,newPath)

示例:

//将1.mp4移动到当路径下的2.mp4(路径不变的话,就相当于是重命名)
let fs=require('fs')fs.rename('./1.mp4','./2.mp4',err=>{if (err){console.log(err)}else{console.log('移动文件成功')}
})
2.2.12删除文件

1)unlink方法

//异步方式移动文件
unlink(file,callback)
//同步方式移动文件
unlinkSync(file)

示例:

//删除当前目录下的2.mp4文件
let fs=require('fs')fs.unlink('./2.mp4',err=>{if (err){console.log(err)}else{console.log('删除成功')}
})

2)rm方法

//异步方式移动文件
rm(file,callback)
//同步方式移动文件
rmSync(file)

示例:

//删除当前目录下的2.mp4文件
let fs=require('fs')fs.rm('./2.mp4',err=>{if (err){console.log(err)}else{console.log('删除成功')}
})
2.2.13创建文件夹
//异步方式创建文件夹
fs.mkdir(path[,options],callback)
//同步方式创建文件夹
fs.mkdirSync(path[,options])

示例1(创建单个文件夹):

//在当前文件夹下创建一个名为mydir的文件夹
let fs=require('fs')
fs.mkdir('./mydir',err=>{if (err){console.log(err)}else{console.log('创建目录成功')}
})

示例2(递归创建文件夹)

//在当前文件夹下创建文件夹a,在a文件夹下创建文件夹b,在b文件夹下创建文件夹c
let fs=require('fs')
//{recursive:true}允许递归创建文件夹
fs.mkdir('./a/b/c',{recursive:true},err=>{if (err){console.log(err)}else{console.log('创建目录成功')}
})
2.2.14读取文件夹
fs.readdir(path,callback)

示例:

//列出当前文件夹中的内容(列表形式)
let fs=require('fs')
fs.readdir('./',(err,data)=>{if(err){console.log(err)}else{console.log(data)}
})

输出:

[ 'a', 'file.js', 'file.txt', 'hello.js', 'mydir', '座右铭.txt' ]
2.2.15删除文件夹
fs.rm(path,options,callback)

示例:

//删除当前文件夹下的a文件夹
let fs=require('fs')
//{recursive:true}代表递归删除,会同时删除文件夹中的内容。如果不加这个选项,则只能删除空文件夹
fs.rm('./a',{recursive:true},err=>{if (err){console.log(err)}else{console.log('删除成功')}
})
2.2.16查看资源状态
fs.stat(path,callback)

示例:

//查看当前目录下file.txt的状态
let fs=require('fs')
fs.stat('./file.txt',(err,data)=>{if (err){console.log(err)}else{console.log('资源信息:',data)console.log('是否为文件',data.isFile())console.log('是否为文件夹',data.isDirectory())}
})

输出:

资源信息: Stats {dev: 3270058782,mode: 33206,nlink: 1,uid: 0,gid: 0,rdev: 0,blksize: 4096,ino: 281474976815110,size: 80,blocks: 0,atimeMs: 1728814074334.3784,mtimeMs: 1728814074334.3784,ctimeMs: 1728814074334.3784,birthtimeMs: 1728811378130.5647,atime: 2024-10-13T10:07:54.334Z,mtime: 2024-10-13T10:07:54.334Z,ctime: 2024-10-13T10:07:54.334Z,birthtime: 2024-10-13T09:22:58.131Z
}
是否为文件 true
是否为文件夹 false

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com