Node中js的调用与fs模块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Node中js的调用与fs模块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5363字,纯文字阅读大概需要8分钟。
内容图文
![Node中js的调用与fs模块](/upload/InfoBanner/zyjiaocheng/614/397cbbe3f4ef40db9f27b6ab6c6cdce4.jpg)
node中js的相互调用
js的导出:
node1.js(文件中):
var multi=function(a,b){
return a*b }
module.exports.multi=multi //JavaScript中Module模式模拟了类的概念,用闭包封装了"私有"状态和方法 把乘法导出
//moudle的话是可以引出多个 直接写exports的话是单引出
js的引入:
node.js(文件中):
var chengfa=require('./node1').multi
console.log(chengfa(5,6)) //30
node与fs模块
fs全称为file system 文件系统,它的功能在服务端操作来说十分重要(通常是关于文件和文件夹的操作)const fs=require('fs') //注意:使用fs模块需要先行引入
//fs模块建议异步操作(提高效率,防止阻塞)
读取 readFile:
fs.readFile('1.txt',{encoding:"utf-8"},function(err,data){//不编码则会变为16进制乱码
if(err){ //错误返回
return console.log(err)
}
console.log(data)//将1.txt内容拿出来
})
复制 copyFile:
fs.copyFile('1.txt','11.txt',function(err){//将1.txt复制给11.txt(如果11.txt拥有内容,则被覆盖)
if(err){ //错误返回
return console.log(err)
}
console.log('复制完毕')
})
写入文件 writeFile:
fs.writeFile('1.txt','写入的内容',{encoding:"utf-8"},function(err){//覆盖原文件(1.txt.)的内容
if(err){
return console.log(err)
}
console.log('文件写入完成')
})
追加 appendFile:
fs.appendFile("1.txt","这是增添的东西",function(err){//给1.txt内容增加(没有1.txt 则会给你新建个2.txt并添加内容)
if(err){
return console.log(err)
}
console.log('文件追加成功')
})
删除 unlink(不允许删除文件夹):
fs.unlink('./1.txt',function(err){
if(err)return console.log(err)
console.log('文件删除成功')
})
创建目录 mkdir:
fs.mkdir('./foreignsmallmovie',function(err){//当前位置创建名为foreignsmallmovie的目录
if(err)return console.log(err)
console.log('文件自动创建成功')
})
读取目录 readdir(例如寻找文件夹中的js文件):
fs.readdir('./',function(err,files){
if(err)return console.log(err)
console.log(files)
files.forEach(function(item){//读取目录中后缀为js的文件
if(path.parse(item).ext=='.js'){
console.log(item)
}
})
})
判断当前路径是否为目录 stat:
fs.stat('1.txt',function(err,stats){
if(err)return console.log(err)
console.log(stats.isDirectory)
})
检查文件是否存在(同步方法) existsSync:
var result=fs.existsSync('1.txt')
console.log(result)//返回 true false
if(result){
console.log('文件存在')
}
else{
console.log('文件不存在哦')
}
文件监听器并返回监听事件类型和目标 watch watchFile:
fs.watch('./jq2(选择框).htm',function(event,filename){
console.log(event,filename)
})
fs.watchFile('./jq1.htm',function(a,b){
console.log(`当前的最近修改时间是: ${a.mtime}`);
console.log(`之前的最近修改时间是: ${b.mtime}`);
})
更改名字(通常更改后缀名) rename:
fs.rename('1.txt','2.html',function(err){
if(err)return console.log(err)
console.log('更名完成')
})
复制文件的自我封装(两种方法尝试):
//复制文件的自我封装 方法1
fs.readFile('1.txt',{encoding:"utf-8"},function(err,data){
if(err){
return console.log(err)
}
fs.appendFile('./1.txt',data,{encoding:"utf-8"},function(err){
if(err){
return console.log(err)
}
console.log('自我封装完成')
})
})
//复制文件的自我封装 方法2
var copyFileByYe=function(src1,src2){
fs.readFile(src1,function(err,data){
if(err)return console.log(err)//条件内容一行,可省略{}
fs.writeFile(src2,data,function(err){
if(err)return console.log(err)
console.log('复制文件成功')
})
})
}
copyFileByYe('./1.txt','./2.txt')
改写文件的读写权限(同步方法) chmodSync:
fs.chmodSync(path, mode)
1. path 文件路径
2. mode 读写权限(如:0o777)
var fs = require('fs'),
fs.chmodSync("./processId.txt", 0o777);
常量 八进制值 说明
fs.constants.S_IRUSR 0o400 所有者可读
fs.constants.S_IWUSR 0o200 所有者可写
fs.constants.S_IXUSR 0o100 所有者可执行或搜索
fs.constants.S_IRGRP 0o40 群组可读
fs.constants.S_IWGRP 0o20 群组可写
fs.constants.S_IXGRP 0o10 群组可执行或搜索
fs.constants.S_IROTH 0o4 其他人可读
fs.constants.S_IWOTH 0o2 其他人可写
fs.constants.S_IXOTH 0o1 其他人可执行或搜索
构造 mode 更简单的方法是使用三个八进制数字的序列( 例如 765)。
最左边的数字(示例中的 7)指定文件所有者的权限。
中间的数字(示例中的 6)指定群组的权限。
最右边的数字(示例中的 5)指定其他人的权限。
数字 说明
7 可读、可写、可执行
6 可读、可写
5 可读、可执行
4 只读
3 可写、可执行
2 只写
1 只可执行
0 没有权限
例如,八进制值 0o765 表示:
所有者可以读取、写入和执行该文件。
群组可以读和写入该文件。
其他人可以读取和执行该文件。
当使用期望的文件模式的原始数字时,任何大于 0o777 的值都可能导致不支持一致的特定于平台的行为。
因此,诸如 S_ISVTX、 S_ISGID 或 S_ISUID 之类的常量不会在 fs.constants 中公开。
注意事项:在 Windows 上,只能更改写入权限,并且不会实现群组、所有者或其他人的权限之间的区别。
fs模块递归实现文件遍历:
//递归==》在自己的方法里去调用自己的方法
var num=0;
var auto=function(){
num
//说明停止条件
if(num==10) return
auto()
}
------------------实例1------------------
const fs=require('fs')
const path=require('path')
//递归 在他里面调用他自己readdirl
var readdirl=function(dir){
fs.readdir(dir,function(err,files){
// if(err) return console.log(err)
//对所取元素进行遍历
files.forEach(function(item){
//拼接路径
var lj=path.join(dir,item)
//判断当前路径状态
fs.stat(lj,function(err,stats){
var stat=stats.isDirectory()
// if(err)return console.log(err)
//递归
if(stat){
readdirl(lj)
}
console.log(lj)
})
})
})
}
readdirl('./')
------------------实例2------------------
const fs=require('fs')
const path=require('path')
var readdir_my=function(dir){
fs.readdir(dir,function(err,files){
if(err&&err.code=='ENOTDIR'){
console.log(dir)
}
else if(err&&err.code=='EPERM'){
console.log(dir)
}
else if(err&&err.code=='EBUSY'){
console.log(dir)
}
else{
files.forEach(function(item){
readdir_my(path.join(dir,item))
})
}
})
}
readdir_my('F:')
--End--
内容总结
以上是互联网集市为您收集整理的Node中js的调用与fs模块全部内容,希望文章能够帮你解决Node中js的调用与fs模块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。