一般用js没办法对本地盘中文件进行读取或者其他操作,但是node.js有文件系统,可以很方便的读取文件内容。
测试例子github地址:https://github.com/manlili/node_learn里面lesson07
同步和异步读取文件
Node 导入文件系统模块(fs)语法如下所示:
创建readfile.js,内容是
进入js所在的文件夹内,打开gitBash输入:
打开文件
定义规则:
参数说明:
path - 文件的路径。
flags - 文件打开的行为。具体值详见下文。
mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
callback - 回调函数,带有两个参数如:callback(err, fd)。
关于flags 参数可以是以下值:
r:以读取模式打开文件。如果文件不存在抛出异常。
r+:以读写模式打开文件。如果文件不存在抛出异常。
rs:以同步的方式读取文件。
rs+:以同步的方式读取和写入文件。
w:以写入模式打开文件,如果文件不存在则创建。
wx:类似 ‘w’,但是如果文件路径存在,则文件写入失败。
w+:以读写模式打开文件,如果文件不存在则创建。
wx+:类似 ‘w+’, 但是如果文件路径存在,则文件读写失败。
a:以追加模式打开文件,如果文件不存在则创建。
ax:类似 ‘a’, 但是如果文件路径存在,则文件追加失败。
a+:以读取追加模式打开文件,如果文件不存在则创建。
ax+:类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。
创建openfile.js,内容是
进入js所在的文件夹内,打开gitBash输入:
获取文件信息
以下为通过异步模式获取文件信息的语法格式:
参数使用说明如下:
path - 文件路径。
callback - 回调函数,带有两个参数如:(err, stats), stats 是 fs.Stats 对象。
其中stats类中的方法有:
stats.isFile():如果是文件返回 true,否则返回 false。
stats.isDirectory():如果是目录返回 true,否则返回 false。
stats.isBlockDevice():如果是块设备返回 true,否则返回 false。
stats.isCharacterDevice():如果是字符设备返回 true,否则返回 false。
stats.isSymbolicLink():如果是软链接返回 true,否则返回 false。
stats.isFIFO():如果是FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。
stats.isSocket():如果是 Socket 返回 true,否则返回 false。
创建statsfile.js,内容是
进入js所在的文件夹内,打开gitBash输入:
写入文件
以下为异步模式下写入文件的语法格式:
参数使用说明如下:
path - 文件路径。
data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(流) 对象。
options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 ‘w’
callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。
创建writefile.js,内容是
进入js所在的文件夹内,打开gitBash输入:
当然还有很多关于文件的操作,详情请见文件系统手册http://www.runoob.com/nodejs/nodejs-fs.html