这篇文章将为大家详细讲解有关nodeJS中fs文件系统如何操作 ,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 文件 I/O 是由简单封装的标准 POSIX 函数提供的。 通过 require(‘fs’) 使用该模块。 所有的方法都有异步和同步的形式。 异步形式始终以完成回调作为它最后一个参数。 传给完成回调的参数取决于具体方法,但第一个参数总是留给异常。 如果操作成功完成,则第一个参数会是 null 或 undefined 当使用同步形式时,任何异常都会被立即抛出。 可以使用 try/catch 来处理异常,或让它们往上冒泡 异步方法不保证执行顺序。 所以下面的例子容易出错 fs.stat
可能在fs.rename
之前执行。正确的方法是把回调链起来 推荐开发者使用这些函数的异步版本。 同步版本会阻塞整个进程,直到它们完成(停止所有连接)1、打开文件【fs.open(path, flags[, mode], callback)】 参数如下: flags可以是: [注意]使用’rs+’模式不会使fs.open()进入同步阻塞调用。如果那是你想要的,则应该使用fs.openSync() 文件的回调函数中的第二个参数fd代表文件标识,与定时器标识类似,用于标识文件,且随着文件的打开顺序递增【fs.openSync(path, flags[, mode])】 fs.open() 的同步版本。 返回一个表示文件描述符的整数2、读取文件【fs.read(fd, buffer, offset, length, position, callback)】 参数如下: 由于使用read()方法,会将文件内容读取buffer对象中,所以需要提前先准备一个buffer对象【fs.readSync(fd, buffer, offset, length, position)】 fs.read() 的同步版本,返回 bytesRead 的数量3、写入文件【fs.write(fd, buffer, offset, length[, position], callback)】 参数如下 [注意]多次对同一文件使用fs.write且不等待回调,是不安全的。对于这种情况,强烈推荐使用 fs.createWriteStream 当我们要对打开的文件进行写操作的时候,打开文件的模式应该是读写模式【fs.write(fd, data[, position[, encoding]], callback)】 该方法写入data到fd指定的文件。如果data不是一个Buffer实例,则该值将被强制转换为一个字符串 不同于写入 buffer,该方法整个字符串必须被写入。不能指定子字符串,这是因为结果数据的字节偏移量可能与字符串的偏移量不同【fs.writeSync()】 fs.write() 的同步版本。返回写入的字节数4、关闭文件【fs.close(fd, callback)】 一个文件被操作后,要及时将该文件关闭 参数如下:【fs.closeSync(fd)】 fs.close(fd, callback)的同步版本,返回undefined 上一部分介绍的都是些底层的操作,接下来将介绍一些更便捷的文件操作。使用下列方法的时候,不需要再打开和关闭文件,直接操作即可1、写入文件【fs.writeFile(file, data[, options], callback)】 异步的将数据写入一个文件,如果文件不存在则新建,如果文件原先存在,会被替换 参数如下:【fs.writeFileSync(file, data[, options])】 fs.writeFile() 的同步版本。返回 undefined2、追加文件【fs.appendFile(filename, data, [options], callback)】 异步地追加数据到一个文件,如果文件不存在则创建文件。 data 可以是一个字符串或 buffer 参数如下【fs.appendFileSync(file, data[, options])】 fs.appendFile()的同步版本。返回undefined3、读取文件【fs.readFile(file[, options], callback)】 参数如下【fs.readFileSync(file[, options])】 fs.readFile的同步版本。返回file的内容 如果指定了encoding选项,则该函数返回一个字符串,否则返回一个buffer4、删除文件【fs.unlink(path, callback)】 参数如下:【fs.unlinkSync(path)】 fs.unlink(path, callback)的同步版本,返回值为undefin免费云主机域名ed5、重命名【fs.rename(oldPath, newPath, callback)】 参数如下:【fs.renameSync(oldPath, newPath)】 fs.rename(oldPath, newPath, callback)的同步版本,返回undefined6、文件信息【fs.stat(path, callback)】 fs.stat()执行后,会将stats类的实例返回给其回调函数。可通过stats类中的提供方法判断文件的相关属性 参数如下: stats类中的方法有【fs.statSync(path)】 fs.stat(path, callback)方法的同步版本,返回一个fs.Stats
实例7、监听【fs.watch(filename[, options][, listener])】 该方法用于监视filename的变化,filename可以是一个文件或一个目录。返回的对象是一个fs.FSWatcher 参数如下 回调中提供的filename
参数仅在 Linux 和 Windows 系统上支持。 即使在支持的平台中,filename
也不能保证提供。 因此,不要以为filename
参数总是在回调中提供,如果它是空的,需要有一定的后备逻辑 [注意]当一个文件出现或消失在一个目录里时,’rename’也会被触发1、创建【fs.mkdir(path[, mode], callback)】 参数如下:【fs.mkdirSync(path[, mode])】 fs.mkdir(path[, mode], callback)的同步版本,返回undefined2、删除【fs.rmdir(path, callback)】 参数如下:【fs.rmdirSync(path, callback)】 fs.rmdir(path, callback)的同步版本,返回undefined3、读取【fs.readdir(path[, options], callback)】 参数如下:【fs.readdirSync(path[, options], callback)】 fs.readdir(path[, options], callback)的同步版本,返回一个不包括'.'
和'..'
的文件名的数组 遍历目录是操作文件时的一个常见需求。比如写一个程序,需要找到并处理指定目录下的所有JS文件时,就需要遍历整个目录 遍历目录时一般使用递归算法,否则就难以编写出简洁的代码。递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题 上边的函数用于计算N的阶乘(N!)。可以看到,当N大于1时,问题简化为计算N乘以N-1的阶乘。当N等于1时,问题达到最小规模,不需要再简化,因此直接返回1 目录是一个树状结构,在遍历时一般使用深度优先+先序遍历算法。深度优先,意味着到达一个节点后,首先接着遍历子节点而不是邻居节点。先序遍历,意味着首次到达了某节点就算遍历完成,而不是最后一次返回某节点才算数。因此使用这种遍历方式时,下边这棵树的遍历顺序是A > B > D > E > C > F
了解了必要的算法后,我们可以简单地实现以下目录遍历函数 可以看到,该函数以某个目录作为遍历的起点。遇到一个子目录时,就先接着遍历子目录。遇到一个文件时,就把文件的绝对路径传给回调函数。回调函数拿到文件路径后,就可以做各种判断和处理。因此假设有以下目录 使用以下代码遍历该目录时,得到的输入如下 如果读取目录或读取文件状态时使用的是异步API,目录遍历函数实现起来会有些复杂,但原理完全相同。travel
函数的异步版本如下关于“nodeJS中fs文件系统如何操作 ”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
这篇文章主要介绍Ssl加密原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!免费云主机域名人们使用这个ssl证书,不一定会知道这个ssl加密原理。这和人们用的家常的一些东西是一样的。但是对于那些需要了解的人也苦于没有一个正规的解释…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。