用watch监控文件的改变
/*
*
* 文件的读取,前面学过的文件添加,和追加.
* 异步地读取一个文件: fs.readFile(filename,[options],callback)
* 同步读取一个文件: fs.readFileSync(fileName,[options])
*
* 检查指定路径的文件,或者目录是否存在, fs.exists(path,callback)
* 检查指定路径的文件,或者目录是否存在, 同步的方法 fs.existsSync(path)
*
* 删除一个文件 :fs.unlink(path,callback)
* 删除一个文件的同步的方式: fs.unlinkSync(path)
*
* 重命名文件: fs.rename(oldPath,newPath,callback)
* 重名名文件的同步版本: fs.renameSync(oldPath,newPath)
*
* 读取文件信息 :fs.stat(path,callback);
* 读取文件信息的同步版本:fs.statSync(path)
*
* 观察指定路劲的改变,filename路径可以是文件或者目录.
:fs.watch(filename,[options],[listener])
* */
var fs = require("fs");
fs.readFile('2.txt', function(err,data){
//console.log(arguments);
if(err){
console.log("文件读取失败!");
}else{
console.log( data.toString() );
}
})
/*
fs.unlink("2.txt",function(err,data){
if(err){
console.log("删除文件失败!")
}else{
console.log("删除文件成功!")
}
})
*/
fs.rename("2.txt","3.txt",function(err,data){
if(err){
console.log("重命名失败!");
}else{
console.log("重命名成功!");
}
})
fs.stat('3.txt',function(err,data){
console.log(arguments);
})
/*
* 点击右键擦汗看文件的属性.
* 文件读取失败!
重命名失败!
{ '0': null,
'1':
Stats {
dev: 146671204,
mode: 33206,
nlink: 1,
uid: 0,
gid: 0,
rdev: 0,
blksize: undefined,
ino: 11258999068426340,
size: 0,
blocks: undefined,
atimeMs: 1502883780433.396,
mtimeMs: 1502883780433.396,
ctimeMs: 1502883785117.564,
birthtimeMs: 1502883780433.396,
atime: 2017-08-16T11:43:00.433Z,
mtime: 2017-08-16T11:43:00.433Z,
ctime: 2017-08-16T11:43:05.118Z,
birthtime: 2017-08-16T11:43:00.433Z } }
Process finished with exit code 0
* */
/*
* fs.watch这个方法是不稳定的,第一个参数是文件或者目录,
* 第二个参数实际使用的并不是很多,第三个参数是回调函数,这个方法
* 并不是完全跨平台的,且在某些情况之下不可用.
* 可用性: 此功能依赖于 操作系统 底层 提供的方法 来监视文件系统的变化.
* 在Linux系统上 使用inotofy.
* 在操作系统上,(包括),使用kqueue
* 在SunOs操作系统上,使用event ports.
* 在windows系统上,该特性依赖于ReadDirectoryChangesW.
*
* 如果系统 底层函数 处于某些原因,不能 使用,那么fs.watch就不可用,例如,
* 监视网络文件系统 的文件 或者目录,就时常不能 稳定工作,有时候甚至于会不起作用.
*
* 在回调函数中 提供的 filename 参数不是在每一个操作系统中都被支持,
* (当下仅在Linux和Windows上支持),即便是在支持的系统中,filename也不能保证
* 在每一次回调的时候 都被提供, 因此不要 假设filename 参数总会在回调函数中提供,
* 在回调函数中添加 检测filename 是否为null的if判断句.
*
* 当文件被改变 或者被 重命名的时候 会触发事件.
*
* */
*
var fs = require('fs');
var filename = "3.txt";
fs.watch(filename,function(ev,fn){
console.log(ev);
if(fn){
console.log(fn+"发生了改变!");
}else{
console.log('......');
}
})