目录

. fs.stat 检测是文件还是目录
. fs.mkdir 创建目录
. fs.writeFile 创建写入文件
. fs.appendFile 追加文件
. fs.readFile 读取文件
. fs.readdir 读取目录
. fs.rename 重命名
. fs.rmdir 删除目录
. fs.unlink 删除文件
. fs.createReadStream 从文件流中读取数据
. fs.createWriteStream 写入文件
. 管道流

0.引入fs模块

var fs=require('fs');  

1. fs.stat 检测是文件还是目录

fs.stat('html/style.css', function (err, stats) {
if (err) {
console.log(err); return false;
} console.log('文件:' + stats.isFile()); // true
console.log('目录:' + stats.isDirectory()); // false })

2. fs.mkdir 创建目录

//接收参数:
//path 将创建的目录路径
//mode 目录权限(读写权限),默认0777
//callback 回调,传递异常参数err
fs.mkdir('css', function (err) {
if (err) {
console.log(err);
return false;
}
console.log('创建目录成功');
})

3. fs.writeFile 创建写入文件

//filename      (String)               文件名称
//data (String | Buffer) 将要写入的内容,可以使字符串 或 buffer数据。
//options (Object) option数组对象,包含:
//· encoding (string) 可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。
//· mode (Number) 文件读写权限,默认值 438
//· flag (String) 默认值 ‘w'
//callback {Function} 回调,传递一个异常参数err。
fs.writeFile('t.txt', '你好nodejs', 'utf8', function (err) {
if (err) {
console.log(err);
return false;
}
console.log('写入成功');
})

4. fs.appendFile 追加文件

fs.appendFile('t.txt', '这是追加的内容', function (err) {
if (err) {
console.log(err);
return false;
}
console.log('写入成功');
})

5.fs.readFile 读取文件

fs.readFile('t.txt', function (err, data) {
if (err) {
console.log(err);
return false;
}
console.log(data);
console.log(data.toString());
})

6.fs.readdir 读取目录

把目录下面的文件和文件夹都获取到

fs.readdir('html', function (err, data) {
if (err) {
console.log(err);
return false;
}
console.log(data);
})

7.fs.rename 重命名

、改名 

、剪切文件
1、改名
fs.rename('html/index.html', 'html/news.html', function (err) {
if (err) {
console.log(err);
return false;
}
console.log('修改名字成功');
})
2、剪切文件
fs.rename('html/style.css', 'html/test/basic.css', function (err) {
if (err) {
console.log(err);
return false;
}
console.log('剪切成功');
})

8. fs.rmdir 删除目录

这个方法只能删除目录,不可以删除文件

删除空目录

fs.rmdir('css', function (err) {
if (err) {
console.log(err);
return false;
}
console.log('删除目录成功');
})

9. fs.unlink 删除文件

fs.unlink('css/1.js', function (err) {
if (err) {
console.log(err);
return false;
}
console.log('删除文件成功');
})

10. fs.createReadStream 从文件流中读取数据

//流的方式读取文件
var readStream = fs.createReadStream('input.txt');
var str = '';
//保存数据
var count = 0;
//次数
readStream.on('data', function (chunk) {
str += chunk;
count++;
}) //读取完成
readStream.on('end', function (chunk) {
console.log(count);
console.log(str);
}) //读取失败
readStream.on('error', function (err) {
console.log(err);
})

11. fs.createWriteStream 写入文件

var data = '我是从数据库获取的数据,我要保存起来\n';
// 创建一个可以写入的流,写入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt');
for (var i = 0; i < 100; i++) {
writerStream.write(data, 'utf8');
}
//标记写入完成
writerStream.end();
writerStream.on('finish', function () {
console.log('写入完成');
})
//失败
writerStream.on('error', function () {
console.log('写入失败');
})

12. 管道流
管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传递到另外一个流中。

如上面的图片所示,我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一个桶流入另一个桶,这样就慢慢的实现了大文件的复制过程。

以下实例我们通过读取一个文件内容并将内容写入到另外一个文件中。 
// 创建一个可读流
var readerStream = fs.createReadStream('input.txt');
// 创建一个可写流
var writerStream = fs.createWriteStream('output.txt');
// 管道读写操作
// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
readerStream.pipe(writerStream);
console.log("程序执行完毕");

Demo

1、判断服务器上面有没有upload目录。没有创建这个目录

var fs = require('fs');
fs.stat('upload', function (err, stats) {
if (err) { // 没有这个目录
fs.mkdir('upload', function (error) {
if (error) {
console.log(error);
return false;
}
console.log('创建成功');
})
} else {
console.log('目录已经存在');
console.log(stats.isDirectory());
}
})

最新文章

  1. iOS 英文学习
  2. GetLastError()函数返回值及含义
  3. 设置 phoneGap/Cordova 3.4 应用程序启动动画闪屏 SplashScreen
  4. hive :MetaException(message:Version information not found in metastore. )
  5. 使用IntelliJ IDEA建立java web项目
  6. JS编程常识
  7. C#图解教程读书笔记(第15章 委托)
  8. HW3.27
  9. 内存储与外存储(IO流的应用)
  10. NodeJs+Express实现简单的Web增删改查
  11. 【解高次同余方程】51nod1038 X^A Mod P
  12. Justoj 2388最短区间 贪心
  13. 【经典数据结构】B树与B+树
  14. Linux 安装 Rabbit MQ
  15. Spark从入门到精通(一)
  16. Hadoop下添加节点和删除节点
  17. Latex 编辑数学公式——快速上手
  18. RabbitMQ在特来电的深度应用
  19. PHP self this parent
  20. 代码记录——phase16,block36

热门文章

  1. SDOI2010粟粟的书架
  2. Ubuntu16.04中把默认JAVA设置为Oracle的JDK!
  3. Tiled结合Unity实现瓦片地图——Tiled2Unity篇
  4. nginx的conf文件,两种配置方式,第一种无ssl证书,第二种有ssl证书。
  5. linux密码修改实验
  6. c语言-猜生日算法
  7. 实验吧之deeeeeeaaaaaadbeeeeeeeeeef-200
  8. Jquery 在ios上事件委托失效
  9. Monkey基本使用(转载)
  10. vue项目element-ui框架中的弹窗中的表单验证清除问题