# fs
不建议在调用 fs.open()、fs.readFile() 或 fs.writeFile() 之前使用 fs.access() 检查文件的可访问性。 这样做会引入竞争条件,因为其他进程可能会在两个调用之间更改文件的状态。 相反,用户代码应该直接打开、读取或写入文件,并处理在文件无法访问时引发的错误。
.unlink()
删除文件 异步const fs= require("fs"); fs.unlink('./tmp/hello.js',(err)=>{ if(err) throw err; console.log('删除成功') })
.unlinkSync()
删除文件 ,同步const fs = require('fs'); try{ fs.unlinkSync('./tmp/hello.js'); console.log('删除成功') }catch(err){ console.log(err,'删除失败') }
.rename()
fs.rename('./tmp/hello.js','./tmp/world.js',(err)=>{
if(err) throw err;
console.log('rename done')
})
.open()
完成操作后,需要关闭描述符,否则可能导致内存泄漏wx
flagr
线程池
除了fs.FSWatcher() 和 显式同步的方法之外,都使用了
libuv
线程池,这对于某些应用程序可能会产生其他负面性能问题,详见 http://nodejs.cn/api/cli.html#cli_uv_threadpool_size_size
fs.FSWatcher()
成功调用一个fs.watch 方法都会返回一个新的fs.FSWatcher对象
fs.access(path,[.mode],callback)
fs.Dirent
类.dirent.isBlockDevice()
boolean
const fs = require('fs');
fs.open('./tmp/hello.js','r',(err,fd)=>{
if(err) throw err;
fs.fstat(fd,(err1,stat)=>{
if(err1) throw err1;
//文件属性
console.log(stat) ;
//关闭文件描述符
fs.close(fd,(errC)=>{
if(errC) throw errC;
console.loh('关闭')
})
})
})
fs.ReadStream
类fs.WriteSteam
类fs.Stats
类fs.stat()
fs.stat('./tmp/world.js',(err,stats)=>{ if(err) throw err; conosle.log(stats) })
fs.lsate()
.fstat
fs.fstat(fd,(err1,stat)=>{ if(err1) throw err1; //文件属性 console.log(stat) ; //关闭文件描述符 fs.close(fd,(errC)=>{ if(errC) throw errC; console.log('关闭') }) })
fs.close()
fs.appendFile(path,data[,options],callback)
异步地将数据追加到文件中,如果文件不存在,则创建该文件,
data
可以使字符串或者Buffer
fs.appendFile('/tmp.append.txt','hello world append file for node.js fs.appendFile function'+new Date(),(err)=>{
if(err) throw err
})
异步方法,顺序无法保证
fs.rename('./tmp/hello.js','./tmp/world.js',(err)=>{
if(err) throw err;
console.log('rename done')
});
//stat可能在rename 之前,
fs.stat('./tmp/world.js',(err,stats)=>{
if(err) throw err;
conosle.log(stats)
})
方法时,在回调内部