Node.js文件的基本操作快速入门

本文详细介绍了Node.js中文件操作的API,包括异步和同步的文件读写、追加、关闭、删除、目录操作等。并通过实例展示了如何使用这些API进行文件的创建、读取、写入和删除等常见操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

写入文件:(异步)

fs.writeFile(file, data[, options], callback)

默认为w模式,会覆盖到文件里面的原文

 

源码:

 

参数1:文件路径

参数2:写入数据

参数3:以key-value方式写入,分别为flag:写入方式  encoding:编码方式 mod:权限

参数4:回调函数,常常用来处理报错信息

 

 

实例:

var fs = require('fs');
var str = '有些失望是不可避免的,但大部分的失望,都因为你高估了自己。';
fs.writeFile('E:/for_file/5.txt',str,{flag:'a'},function (e) {
   if(e){
       return console.error(e);
   }
});

 

运行结果:

 

关闭文件:(异步)

fs.close(fd, callback)

关闭通过fs.open()打开的文件

fd是fs.open()函数返回的文件句柄,callback为回调函数,无参数。

 

实例:

var fs = require('fs');
fs.open('E:/for_file/6.txt','r',function (e,fd) {
    if(e){
        return console.error(e);
    }
    fs.close(fd,function () {
        console.log('关闭文件');
    });
});

 

运行结果:

 

 

读取文件

源码:

 

fd是fs.open()返回的文件句柄

buffer是读取后写入的缓冲区对象

offset缓冲区写入的偏移量

length:读取字节数

position:文件读取的起始位置(默认从文件指针读起)

回调函数,三个参数:err,bytesRead(读取字节数),buffer(缓冲区对象)

 

实例:

var fs = require('fs');
var buf = new Buffer.alloc(1024*1);
fs.open('E:/for_file/6.txt','r',function (e,fd) {
    if(e){
        return console.error(e);
    }
    fs.read(fd,buf,0,buf.length,null,function (err,num,buff) {
        if(err){
            return console.error(err);
        }
        if(num>0){
            console.log(buff.toString());
        }
    });
    fs.close(fd,function () {
        console.log('关闭文件');
    });
});



fs.ftruncate(fd, len, callback)

截取文件部分内容,len为截取长度,callback无参数

对文件的操作为,截取文件前len的内容,即删去len后面的内容。

实例:

var fs = require('fs');
var buf = new Buffer.alloc(1024*1);
fs.open('E:/for_file/6.txt','r+',function (e,fd) {
    if (e) {
        return console.error(e);
    }

    fs.ftruncate(fd,5, function (err) {
        if (err) {
            return console.error(err);
        }
        fs.read(fd, buf, 0, buf.length, 0, function (e, num) {
            if (e) {
                return console.error(e);
            }
            if (num > 0) {
                console.log('hello');
                console.log(buf.toString());
            }
            fs.close(fd, function (e) {
                if (e) {
                    return console.error(e);
                }
            })
        });
    });
});

 

 

运行结果:

 

 

 

删除文件

fs.unlink(path, callback)

类似为unix的思想,具体可以看其他博文了解

Path:文件路径

Callback:回调函数,无参数

 

实例:

var fs = require('fs');
fs.unlink('E:/for_file/5.txt',function (e) {
    if(e){
        console.log(e);
    }
});

 

创建文件夹

fs.mkdir(path[, mode], callback)

 

path:文件夹路径

mode:即权限,默认为全部权限开放,具体内容,可了解unix的文件系统的权限问题

callback:回调函数,无参数

 

实例:

var fs = require('fs');
fs.unlink('E:/for_file/5.txt',function (e) {
    if(e){
        console.log(e);
    }
});

 

运行结果:

 

 

读取目录

fs.readdir(path, callback)

path:读取文件夹路径

option:编码方式,默认为空。(不建议使用)

callback:返回两个参数,err和files(文件)

 

实例:

var fs = require('fs');
var con = fs.readdir('E:/for_file','utf8',function (e,file) {
    if(e){
        return console.error(e);
    }
    console.log(file);
});

运行结果:

 

 

删除文件夹

fs.rmdir(path, callback)

path:文件路径

callback:回调函数,无参数

 

实例:

var fs = require('fs');
fs.rmdir('E:/for_file/hope',function (e) {
    if(e){
        return console.error(e);
    }
});

其他常用函数浏览:

序号

方法 & 描述

1

fs.rename(oldPath, newPath, callback)
异步 rename().回调函数没有参数,但可能抛出异常。

2

fs.ftruncate(fd, len, callback)
异步 ftruncate().回调函数没有参数,但可能抛出异常。

3

fs.ftruncateSync(fd, len)
同步 ftruncate()

4

fs.truncate(path, len, callback)
异步 truncate().回调函数没有参数,但可能抛出异常。

5

fs.truncateSync(path, len)
同步 truncate()

6

fs.chown(path, uid, gid, callback)
异步 chown().回调函数没有参数,但可能抛出异常。

7

fs.chownSync(path, uid, gid)
同步 chown()

8

fs.fchown(fd, uid, gid, callback)
异步 fchown().回调函数没有参数,但可能抛出异常。

9

fs.fchownSync(fd, uid, gid)
同步 fchown()

10

fs.lchown(path, uid, gid, callback)
异步 lchown().回调函数没有参数,但可能抛出异常。

11

fs.lchownSync(path, uid, gid)
同步 lchown()

12

fs.chmod(path, mode, callback)
异步 chmod().回调函数没有参数,但可能抛出异常。

13

fs.chmodSync(path, mode)
同步 chmod().

14

fs.fchmod(fd, mode, callback)
异步 fchmod().回调函数没有参数,但可能抛出异常。

15

fs.fchmodSync(fd, mode)
同步 fchmod().

16

fs.lchmod(path, mode, callback)
异步 lchmod().回调函数没有参数,但可能抛出异常。Only available on Mac OS X.

17

fs.lchmodSync(path, mode)
同步 lchmod().

18

fs.stat(path, callback)
异步 stat(). 回调函数有两个参数 err, statsstats fs.Stats 对象。

19

fs.lstat(path, callback)
异步 lstat(). 回调函数有两个参数 err, statsstats fs.Stats 对象。

20

fs.fstat(fd, callback)
异步 fstat(). 回调函数有两个参数 err, statsstats fs.Stats 对象。

21

fs.statSync(path)
同步 stat(). 返回 fs.Stats 的实例。

22

fs.lstatSync(path)
同步 lstat(). 返回 fs.Stats 的实例。

23

fs.fstatSync(fd)
同步 fstat(). 返回 fs.Stats 的实例。

24

fs.link(srcpath, dstpath, callback)
异步 link().回调函数没有参数,但可能抛出异常。

25

fs.linkSync(srcpath, dstpath)
同步 link().

26

fs.symlink(srcpath, dstpath[, type], callback)
异步 symlink().回调函数没有参数,但可能抛出异常。 type 参数可以设置为 'dir', 'file', 'junction' (默认为 'file')

27

fs.symlinkSync(srcpath, dstpath[, type])
同步 symlink().

28

fs.readlink(path, callback)
异步 readlink(). 回调函数有两个参数 err, linkString

29

fs.realpath(path[, cache], callback)
异步 realpath(). 回调函数有两个参数 err, resolvedPath

30

fs.realpathSync(path[, cache])
同步 realpath()。返回绝对路径。

31

fs.unlink(path, callback)
异步 unlink().回调函数没有参数,但可能抛出异常。

32

fs.unlinkSync(path)
同步 unlink().

33

fs.rmdir(path, callback)
异步 rmdir().回调函数没有参数,但可能抛出异常。

34

fs.rmdirSync(path)
同步 rmdir().

35

fs.mkdir(path[, mode], callback)
S异步 mkdir(2).回调函数没有参数,但可能抛出异常。 mode defaults to 0777.

36

fs.mkdirSync(path[, mode])
同步 mkdir().

37

fs.readdir(path, callback)
异步 readdir(3). 读取目录的内容。

38

fs.readdirSync(path)
同步 readdir().返回文件数组列表。

39

fs.close(fd, callback)
异步 close().回调函数没有参数,但可能抛出异常。

40

fs.closeSync(fd)
同步 close().

41

fs.open(path, flags[, mode], callback)
异步打开文件。

42

fs.openSync(path, flags[, mode])
同步 version of fs.open().

43

fs.utimes(path, atime, mtime, callback)
 

44

fs.utimesSync(path, atime, mtime)
修改文件时间戳,文件通过指定的文件路径。

45

fs.futimes(fd, atime, mtime, callback)
 

46

fs.futimesSync(fd, atime, mtime)
修改文件时间戳,通过文件描述符指定。

47

fs.fsync(fd, callback)
异步 fsync.回调函数没有参数,但可能抛出异常。

48

fs.fsyncSync(fd)
同步 fsync.

49

fs.write(fd, buffer, offset, length[, position], callback)
将缓冲区内容写入到通过文件描述符指定的文件。

50

fs.write(fd, data[, position[, encoding]], callback)
通过文件描述符 fd 写入文件内容。

51

fs.writeSync(fd, buffer, offset, length[, position])
同步版的 fs.write()

52

fs.writeSync(fd, data[, position[, encoding]])
同步版的 fs.write().

53

fs.read(fd, buffer, offset, length, position, callback)
通过文件描述符 fd 读取文件内容。

54

fs.readSync(fd, buffer, offset, length, position)
同步版的 fs.read.

55

fs.readFile(filename[, options], callback)
异步读取文件内容。

56

fs.readFileSync(filename[, options])<="" td="">

57

fs.writeFile(filename, data[, options], callback)
异步写入文件内容。

58

fs.writeFileSync(filename, data[, options])
同步版的 fs.writeFile

59

fs.appendFile(filename, data[, options], callback)
异步追加文件内容。

60

fs.appendFileSync(filename, data[, options])
The 同步 version of fs.appendFile.

61

fs.watchFile(filename[, options], listener)
查看文件的修改。

62

fs.unwatchFile(filename[, listener])
停止查看 filename 的修改。

63

fs.watch(filename[, options][, listener])
查看 filename 的修改,filename 可以是文件或目录。返回 fs.FSWatcher 对象。

64

fs.exists(path, callback)
检测给定的路径是否存在。

65

fs.existsSync(path)
同步版的 fs.exists.

66

fs.access(path[, mode], callback)
测试指定路径用户权限。

67

fs.accessSync(path[, mode])
同步版的 fs.access

68

fs.createReadStream(path[, options])
返回ReadStream 对象。

69

fs.createWriteStream(path[, options])
返回 WriteStream 对象。

70

fs.symlink(srcpath, dstpath[, type], callback)
异步 symlink().回调函数没有参数,但可能抛出异常。

 

node.js创建服务器和npm基本操作

REPL和回调函数

node.js——绑定事件

node.js——error事件、缓冲区操作

node.js——缓冲区操作

node.js——流的操作

node.js——模块系统和函数​​​​​​​

node.js——路由​​​​​​​

node.js——全局对象​​​​​​​

node.js对文件的操作​​​​​​​​​​​​​​

### Linux `futimes` 函数的使用示例 `futimes` 是一个用于更改文件访问时间和修改时间的系统调用。它类似于 `utime` 和 `utimes`,但主要区别在于它可以作用于已打开的文件描述符而不是路径名。以下是关于如何使用 `futimes` 的详细介绍以及代码示例。 #### 使用说明 `futimes` 函数定义如下: ```c #include <sys/time.h> int futimes(int fd, const struct timeval times[2]); ``` - 参数 `fd`: 文件描述符,表示要操作的目标文件。 - 参数 `times`: 一个指向两个 `struct timeval` 结构体数组的指针,分别指定新的访问时间和修改时间。如果该参数为 NULL,则会将文件的时间戳设置为当前时间[^1]。 返回值:成功时返回 0;失败则返回 -1 并设置 errno。 #### 示例代码 下面是一个简单的 C 程序演示了如何使用 `futimes` 来改变文件的时间戳。 ```c #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/time.h> #define FILENAME "testfile.txt" int main() { int fd; struct timeval tv[2]; // 打开或创建测试文件 fd = open(FILENAME, O_RDWR | O_CREAT, 0644); if (fd == -1) { perror("open"); exit(EXIT_FAILURE); } // 设置自定义的时间戳 tv[0].tv_sec = 1577836800; // 访问时间: 2020年1月1日 UTC 时间 tv[0].tv_usec = 0; tv[1].tv_sec = time(NULL); // 修改时间为当前时间 tv[1].tv_usec = 0; // 调用 futimes 改变文件时间戳 if (futimes(fd, tv) == -1) { perror("futimes"); close(fd); unlink(FILENAME); exit(EXIT_FAILURE); } printf("File '%s' timestamps updated successfully.\n", FILENAME); close(fd); unlink(FILENAME); // 删除临时文件以便清理环境 return EXIT_SUCCESS; } ``` 此程序执行以下步骤: 1. 创建并打开名为 `testfile.txt` 的文件。 2. 定义一个新的访问时间和修改时间,并将其存储到结构体数组 `tv` 中。 3. 利用 `futimes` 将这些新设定的时间应用至目标文件。 4. 成功更新后打印消息,并关闭文件句柄删除文件以保持干净的工作区。 注意,在实际开发过程中应考虑错误处理机制来增强健壮性和用户体验。 #### 关键点解释 - **timeval**: 这种数据类型用来保存秒级精度和微秒级偏移量的时间信息。对于更精确控制或者跨平台兼容性需求较高的场景下非常有用。 - **errno**: 当发生错误时,除了返回负数外还会通过全局变量 errno 提供额外的信息帮助定位具体问题所在位置[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值