笔记中,一些不常用的属性或方法都有省略
使用fs
文件系统要引入require('fs')
,这个是node自带的模块无需下载
一般回调函数第一个参数都会保留给异常,如果操作成功,那第一个参数会是null
或undefined
。
unlink
用法:
fs.unlink(src, callback)
这个方法作用是删除一个文件
unlinkSync
用法:
fs.unlinkSync(src)
这个方法一样是删除一个文件,不过是同步的去执行操作
rename
用法:
fs.rename(src, renameSrc, callback)
更改文件文字,第一个参数是文件路径,第二个参数是修改名字后的路径
stat方法
fs.stat(path, callback)
回调接收两个参数,第二个参数是states对象,这个对象提供了文件的信息
state类的方法:
方法 | 描述 |
---|---|
stats.isFile() | 如果是文件返回 true,否则返回 false。 |
stats.isDirectory() | 如果是目录返回 true,否则返回 false。 |
readdir
读取目录信息
rs.readdir(path, callback(err, file))
rmdir
删除目录
rs.rmdir(path, callback(err))
每个打开的文件都会分配一个文件描述符的数值标识,大多操作系统会限制文件描述符的数量,所以操作完成后要关闭描述符,不然会造成内存泄漏,最后应用奔溃。
打开文件fs.open
,关闭文件fs.close
fs.open
用法:
fs.open(src, flags[, mode], callback)
flags是文件打开的行为。mode是文件的权限
flags参数值:
Flag | 描述 |
---|---|
r | 读取文件,如果不存在报错 |
r+ | 读写文件,如果不存在报错 |
rs | 以同步的方式读取文件 |
rs+ | 以同步的方式读写 |
w | 写入方式打开文件,文件不存在则创建 |
wx | 读写方式打开文件,文件不存在则写入失败 |
w+ | 以读写方式打开文件,不存在则创建 |
wx+ | 如果文件存在,则文件读写失败 |
a | 以追加模式打开文件,如果文件不存在则创建。 |
ax | 但是如果文件路径存在,则文件追加失败。 |
a+ | 以读取追加模式打开文件,如果文件不存在则创建。 |
ax+ | 类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。 |
javascript本身只有字符串数据类型,没有二进制类型,所以在node.js中定义了一个buffer类,这个buffer库为node.js提供了一种存储原始数据的方法,让node可以处理二进制数据。一个buffer类类似于一个整数数组,存于v8内存之外的一块原始内存中。
在nodejs6.0前使用new Buffer() 创建buffer实例,因为有捕获一些敏感数据,所以在6.0以后使用Buffer.from()来创建buffer对象
创建 Buffer 类:
Buffer 提供了以下 API 来创建 Buffer 类:
Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0
Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据
Buffer.allocUnsafeSlow(size)
Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。
Buffer.from(buffer): 复制传入的 Buffer 实例的数据,并返回一个新的 Buffer 实例
Buffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例
Stream是一个抽象接口,node很多对象实现了这个接口。例如http服务器发起请求的request对象就是一个stream。
stream有四种流类型:
readable 可读
writable 可写
duplex 可读可写
transform写入,读取
常用事件:
data 当有数据可读触发
end 没有更多数据触发
error 写入接收出错触发
finish所有数据写入到底层系统触发
从流读取数据
var fs = require("fs");
var data = '';
// 创建可读流
var readerStream = fs.createReadStream('input.txt');
// 设置编码为 utf8。
readerStream.setEncoding('UTF8');
// 处理流事件 --> data, end, and error
readerStream.on('data', function(chunk) {
data += chunk;
});
readerStream.on('end',function(){
console.log(data);
});
readerStream.on('error', function(err){
console.log(err.stack);
});
console.log("程序执行完毕");
写入流
var fs = require("fs");
var data = '菜鸟教程官网地址:www.runoob.com';
// 创建一个可以写入的流,写入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt');
// 使用 utf8 编码写入数据
writerStream.write(data,'UTF8');
// 标记文件末尾
writerStream.end();
// 处理流事件 --> data, end, and error
writerStream.on('finish', function() {
console.log("写入完成。");
});
writerStream.on('error', function(err){
console.log(err.stack);
});
console.log("程序执行完毕");
属性 | 描述 |
---|---|
stdout | 标准输出流。 |
stderr | 标准错误流。 |
stdin|标准输入流。
argv|argv 属性返回一个数组,由命令行执行脚本时的各个参数组成。它的第一个成员总是node,第二个成员是脚本文件名,其余成员是脚本文件的参数。
execPath|返回执行当前脚本的 Node 二进制文件的绝对路径。
platform|运行程序所在的平台系统 ‘darwin’, ‘freebsd’, ‘linux’, ‘sunos’ 或 ‘win32’
pid|当前进程的进程号。
方法 | 描述 |
---|---|
abort() | 这将导致 node 触发 abort 事件。会让 node 退出并生成一个核心文件。 |
chdir(directory) | 改变当前工作进程的目录,如果操作失败抛出异常 |
cwd() | 返回当前进程的工作目录 |
memoryUsage() | 返回一个对象,描述了 Node 进程所用的内存状况,单位为字节 |
util.inherits 实现对象间的原型继承
util.inherits(要被继承,继承过去的)
util.inspect 将任意对象转换字符串的方法
util.inspect(object, 更多信息, 递归层数, 颜色)
util.isArray 检测一个对象是否是数组,是返回true,否返回false
util.isArray(object)
util.isRegExp 检测参数是否是正则表达式,是返回true,否返回false
util.isArray(str)
util.isDate 检测参数是否是一个日期,是返回true,否返回false
util.isArray(data)
util.isError 检测参数是否是一个错误对象,是返回true,否返回false
util.isArray(object)
resolve
解析str字符到from的绝对路径中
resolve(from, [...str]);
parse
解析url地址,放回一个存有url信息的对象, 第一个bool值默认false,true为将jquery信息转换为对象。第二个默认false,true为将//
为头的信息转换为host,false则是将//在内的信息全部解析为pathname
url.parse(url, boolean, boolean)
方法 | 描述 |
---|---|
totalmem | 内存总量 |
freemem | 可用内存 |
cpus | 放回一个对象,存储cpu信息 |
platform | 操作系统 |
type | 系统类型 |