<h3 id="同步是指同步阻塞操作异步是指异步非阻塞操作">同步是指:同步阻塞操作,异步是指:异步非阻塞操作。
<h1 id="第一部分fs模块">第一部分:fs模块
<h3 id="引入fs模块">1.引入fs模块
- require('fs');
文件">2.写文件
- fs.writeFile(path,data[,option],callback)
- path:文件路径
- option:配置参数:比如:{encoding:'utf8'}
-
callback(err):回调函数
//异步写入文件
function writeFile(){
fs.readFile('./www/404.html',function(err,data){
console.log("读取的内容",data)
fs.writeFile('./test.txt',data,{encoding:"utf8"},function(err){
if(err){
console.log("内容写入失败")
throw err
}
console.log("内容写入成功")
})
})
}
writeFile();
-
fs.writeFileSync(path,option])
//同步写入内容
function writeFileSync(path){
var result =fs.writeFileSync(path,"测试文本......");
if(!result){
console.log("内容写入成功")
}
}
writeFileSync('./test.txt')
-
fs.appendFile(path,callback)
fs.appendFileSync(path,option])
-
fs.mkdir(path,callback)
fs.mkdirSync(path)
- fs.readFile(path,callback)
- path:文件路径
-
callback(err,data):读取的buffer
fs.readFile(path)
-
fs.readdir(path,callback)
fs.readdirSync(path)
callback(err):回调函数
//异步写入文件
function writeFile(){
fs.readFile('./www/404.html',function(err,data){
console.log("读取的内容",data)
fs.writeFile('./test.txt',data,{encoding:"utf8"},function(err){
if(err){
console.log("内容写入失败")
throw err
}
console.log("内容写入成功")
})
})
}
writeFile();
fs.writeFileSync(path,option])
//同步写入内容
function writeFileSync(path){
var result =fs.writeFileSync(path,"测试文本......");
if(!result){
console.log("内容写入成功")
}
}
writeFileSync('./test.txt')
fs.appendFile(path,callback)
fs.appendFileSync(path,option])
-
fs.mkdir(path,callback)
fs.mkdirSync(path)
- fs.readFile(path,callback)
- path:文件路径
-
callback(err,data):读取的buffer
fs.readFile(path)
-
fs.readdir(path,callback)
fs.readdirSync(path)
fs.mkdir(path,callback)
fs.mkdirSync(path)
- fs.readFile(path,callback)
- path:文件路径
-
callback(err,data):读取的buffer
fs.readFile(path)
-
fs.readdir(path,callback)
fs.readdirSync(path)
callback(err,data):读取的buffer
fs.readFile(path)
-
fs.readdir(path,callback)
fs.readdirSync(path)
fs.readdir(path,callback)
fs.readdirSync(path)
fs.existsSync(path)
删除文件文件夹">8.删除文件/文件夹
删除文件unlinkunlinksync">删除文件:unlink/unlinkSync
删除文件夹rmdirrmdirsync">删除文件夹:rmdir/rmdirSync
//fs.redir不能删除非空文件夹
function removeDir(dirName){
fs.rmdir(dirName,function(res){
//如果删除成功,则res为null
console.log("操作结果",res)
})
}
removeDir("./css")
文件文件夹路径">9.更改文件/文件夹路径
- fs.rename(oldpath,newpath,callback)
- fs.renameSync(oldpath,newpath)
文件夹">10.监听文件夹
- fs.watch(dirname,listener)
- dirname:文件路径
- listener(curr,prev)
- curr:当前文件
- prev:之前文件
- fs.unwatchFile(filename,listener)
获取物理路径realpathpathcallbackerrresolvepathrealpathsyncpath">获取物理路径:realpath(path,callback(err,resolvePath))/realpathSync(path)
获取文件信息statpathcallbackerrstat">获取文件信息:stat(path,stat))
文件fs.openpathflagscallbackerrfd">打开文件:fs.open(path,flags,fd))
flags:r 以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+ 以同步的方式读取和写入文件。
w 以写入模式打开文件,如果文件不存在则创建。
wx 类似 'w',但是如果文件路径存在,则文件写入失败。
w+ 以读写模式打开文件,如果文件不存在则创建。
wx+ 类似 'w+', 但是如果文件路径存在,则文件读写失败。
a 以追加模式打开文件,如果文件不存在则创建。
ax 类似 'a', 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 'a+', 但是如果文件路径存在,则文件读取追加失败。
文件fs.writefdbufferoffsetlengthpositioncallbackerrbytes">写文件:fs.write(fd,buffer,offset,length,position,bytes))
文件fs.readfdbufferoffsetlengthpositioncallbackerrbytes">读文件:fs.read(fd,bytes))
关闭文件fs.closefdcallbackerr">关闭文件:fs.close(fd,callback(err))
生成拼接url">1.用于解析,生成,拼接url
- 如果为true,则url.query={aa:10,bb:20}
-
如果为false,则url.query='aa=10&bb=20'
- protocol:协议
- host:主机,包含端口
- hostname:主机名
- port:端口
- .hash:hash参数
- search:?参数
- query:url参数
- pathname:路径
- path:含参数的路径
href:完整链接
- option:maxKeys:1000
- sep:参数之间的分隔符
-
eq:参数的赋值连接符
-
解码
解码
- 标准化路径
-
生成物理路径
- 整合路径
-
join(path1,path2,...)
- 解析为绝对路径
- resolve(cd1,cd2,cd3,....)
-
相当于一次次的调用cd命令
- 解析相对路径
- relative(from,to)
- 解析从from到to的相对路径
-
from为文件夹路径
- 路径所在文件夹路径
-
dirname(path)
- 路径的最后一部分
- basename(path[,ext])
ext:想要去掉的文件后缀名
- fs.renameSync(oldpath,newpath)
文件夹">10.监听文件夹
- fs.watch(dirname,listener)
- dirname:文件路径
- listener(curr,prev)
- curr:当前文件
- prev:之前文件
- fs.unwatchFile(filename,listener)
获取物理路径realpathpathcallbackerrresolvepathrealpathsyncpath">获取物理路径:realpath(path,callback(err,resolvePath))/realpathSync(path)
获取文件信息statpathcallbackerrstat">获取文件信息:stat(path,stat))
文件fs.openpathflagscallbackerrfd">打开文件:fs.open(path,flags,fd))
flags:r 以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+ 以同步的方式读取和写入文件。
w 以写入模式打开文件,如果文件不存在则创建。
wx 类似 'w',但是如果文件路径存在,则文件写入失败。
w+ 以读写模式打开文件,如果文件不存在则创建。
wx+ 类似 'w+', 但是如果文件路径存在,则文件读写失败。
a 以追加模式打开文件,如果文件不存在则创建。
ax 类似 'a', 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 'a+', 但是如果文件路径存在,则文件读取追加失败。
文件fs.writefdbufferoffsetlengthpositioncallbackerrbytes">写文件:fs.write(fd,buffer,offset,length,position,bytes))
文件fs.readfdbufferoffsetlengthpositioncallbackerrbytes">读文件:fs.read(fd,bytes))
关闭文件fs.closefdcallbackerr">关闭文件:fs.close(fd,callback(err))
生成拼接url">1.用于解析,生成,拼接url
- 如果为true,则url.query={aa:10,bb:20}
-
如果为false,则url.query='aa=10&bb=20'
- protocol:协议
- host:主机,包含端口
- hostname:主机名
- port:端口
- .hash:hash参数
- search:?参数
- query:url参数
- pathname:路径
- path:含参数的路径
href:完整链接
- option:maxKeys:1000
- sep:参数之间的分隔符
-
eq:参数的赋值连接符
-
解码
解码
- 标准化路径
-
生成物理路径
- 整合路径
-
join(path1,path2,...)
- 解析为绝对路径
- resolve(cd1,cd2,cd3,....)
-
相当于一次次的调用cd命令
- 解析相对路径
- relative(from,to)
- 解析从from到to的相对路径
-
from为文件夹路径
- 路径所在文件夹路径
-
dirname(path)
- 路径的最后一部分
- basename(path[,ext])
ext:想要去掉的文件后缀名
flags:r 以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+ 以同步的方式读取和写入文件。
w 以写入模式打开文件,如果文件不存在则创建。
wx 类似 'w',但是如果文件路径存在,则文件写入失败。
w+ 以读写模式打开文件,如果文件不存在则创建。
wx+ 类似 'w+', 但是如果文件路径存在,则文件读写失败。
a 以追加模式打开文件,如果文件不存在则创建。
ax 类似 'a', 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 'a+', 但是如果文件路径存在,则文件读取追加失败。
生成拼接url">1.用于解析,生成,拼接url
- 如果为true,则url.query={aa:10,bb:20}
-
如果为false,则url.query='aa=10&bb=20'
- protocol:协议
- host:主机,包含端口
- hostname:主机名
- port:端口
- .hash:hash参数
- search:?参数
- query:url参数
- pathname:路径
- path:含参数的路径
href:完整链接
- option:maxKeys:1000
- sep:参数之间的分隔符
-
eq:参数的赋值连接符
-
解码
解码
- 标准化路径
-
生成物理路径
- 整合路径
-
join(path1,path2,...)
- 解析为绝对路径
- resolve(cd1,cd2,cd3,....)
-
相当于一次次的调用cd命令
- 解析相对路径
- relative(from,to)
- 解析从from到to的相对路径
-
from为文件夹路径
- 路径所在文件夹路径
-
dirname(path)
- 路径的最后一部分
- basename(path[,ext])
ext:想要去掉的文件后缀名
如果为false,则url.query='aa=10&bb=20'
href:完整链接
- option:maxKeys:1000
- sep:参数之间的分隔符
-
eq:参数的赋值连接符
-
解码
解码
- 标准化路径
-
生成物理路径
- 整合路径
-
join(path1,path2,...)
- 解析为绝对路径
- resolve(cd1,cd2,cd3,....)
-
相当于一次次的调用cd命令
- 解析相对路径
- relative(from,to)
- 解析从from到to的相对路径
-
from为文件夹路径
- 路径所在文件夹路径
-
dirname(path)
- 路径的最后一部分
- basename(path[,ext])
ext:想要去掉的文件后缀名
eq:参数的赋值连接符
解码
解码
- 标准化路径
-
生成物理路径
- 整合路径
-
join(path1,path2,...)
- 解析为绝对路径
- resolve(cd1,cd2,cd3,....)
-
相当于一次次的调用cd命令
- 解析相对路径
- relative(from,to)
- 解析从from到to的相对路径
-
from为文件夹路径
- 路径所在文件夹路径
-
dirname(path)
- 路径的最后一部分
- basename(path[,ext])
ext:想要去掉的文件后缀名
生成物理路径
join(path1,path2,...)
相当于一次次的调用cd命令
from为文件夹路径
dirname(path)
ext:想要去掉的文件后缀名