【汇总】Node.js文件系统、路径的操作函数

深入掌握JavaScript Node.js开发 本文还有配套的精品资源,点击获取 简介:JavaScript是前端开发中的主导语言,在Node.js环境下的服务器端编程中也显示出重要性。Node.js是一个基于V8引擎的跨平台JavaScript运行环境,具有事件驱动和非阻塞I/O特性,适用于构建高性能的并发服务器。该压缩包文件可能包含有关Node.js核心概念和模块的资料,比如模块化设计、文件系统操作、HTTP服务器创... 阅读详情

Node.js文件系统、路径的操作函数

目录

Node.js文件系统、路径的操作函数

1、读取文件readFile函数

2、写文件

3、以追加方式写文件

4、打开文件

5、读文件,读取打开的文件内容到缓冲区中;

6、写文件,将缓冲区内数据写入使用fs.open打开的文件

7、刷新缓存区;

8、创建目录;

9、读取目录;

10、查看文件与目录的信息;

11、查看文件与目录的是否存在

12、修改文件访问时间与修改时间

13、修改文件或目录的操作权限

14、移动/重命名文件或目录

15、删除空目录

16、监视文件

17、取消监视文件

18、文件流

19、创建读取流

20、创建写入流

21、管道pipe实现流读写

22、路径解析,得到规范化的路径格式

23、路径结合、合并,路径最后不会带目录分隔符

24、获取绝对路径

25、获取相对路径

26、path.dirname(p)

27、path.basename(path, [ext])

28、path.extname(path)

29、path.sep 属性

30、path.delimiter属性

参考

 

 

将Node.js的文件系统、文件流及路径操作API详细的学习了一下,代码都是测试过的,也许很简单,但为了打好基础,还是要有点一丝不苟的精神,从中我也更深入理解异步回调事件机制,希望对你有用……

//公共引用

1.        var fs = require('fs'),

2.            path = require('path');

1、读取文件readFile函数

//readFile(filename,[options],callback);

/**

 * filename, 必选参数,文件名

 * [options],可选参数,可指定flag(文件操作选项,如r+ 读写;w+ 读写,文件不存在则创建)及encoding属性

 * callback 读取文件后的回调函数,参数默认第一个err,第二个data 数据

 */

1.        fs.readFile(__dirname + '/test.txt', {flag: 'r+', encoding: 'utf8'}, function (err, data) {

2.            if(err) {

3.                console.error(err);

4.                return;

5.            }

6.            console.log(data);

7.        });

2、写文件

// fs.writeFile(filename,data,[options],callback);

var w_data = '这是一段通过fs.writeFile函数写入的内容;\r\n';

var w_data = new Buffer(w_data);

 

/**

 * filename, 必选参数,文件名

 * data, 写入的数据,可以字符或一个Buffer对象

 * [options],flag,mode(权限),encoding

 * callback 读取文件后的回调函数,参数默认第一个err,第二个data 数据

 */

1.        fs.writeFile(__dirname + '/test.txt', w_data, {flag: 'a'}, function (err) {

2.            if(err) {

3.                console.error(err);

4.            } else {

5.                console.log('写入成功');

6.            }

7.        });

 

3、以追加方式写文件

// fs.appendFile(filename,data,[options],callback);

1.        fs.appendFile(__dirname + '/test.txt', '使用fs.appendFile追加文件内容', function () {

2.            console.log('追加内容完成');

3.        });

 

4、打开文件

// fs.open(filename, flags, [mode], callback);

/**

 * filename, 必选参数,文件名

 * flags, 操作标识,如"r",读方式打开

 * [mode],权限,如777,表示任何用户读写可执行

 * callback 打开文件后回调函数,参数默认第一个err,第二个fd为一个整数,表示打开文件返回的文件描述符,window中又称文件句柄

 */

1.        fs.open(__dirname + '/test.txt', 'r', '0666', function (err, fd) {

2.            console.log(fd);

3.        });

 

5、读文件,读取打开的文件内容到缓冲区中;

// fs.read(fd, buffer, offset, length, position, callback);

/**

 * fd, 使用fs.open打开成功后返回的文件描述符

 * buffer, 一个Buffer对象,v8引擎分配的一段内存

 * offset, 整数,向缓存区中写入时的初始位置,以字节为单位

 * length, 整数,读取文件的长度

 * position, 整数,读取文件初始位置;文件大小以字节为单位

 * callback(err, bytesRead, buffer), 读取执行完成后回调函数,bytesRead实际读取字节数,被读取的缓存区对象

 */

 

1.        fs.open(__dirname + '/test.txt', 'r', function (err, fd) {

2.            if(err) {

3.                console.error(err);

4.                return;

5.            } else {

6.                var buffer = new Buffer(255);

7.                console.log(buffer.length);

8.                //每一个汉字utf8编码是3个字节,英文是1个字节

9.                fs.read(fd, buffer, 0, 9, 3, function (err, bytesRead, buffer) {

10.                 if(err) {

11.                     throw err;

12.                 } else {

13.                     console.log(bytesRead);

14.                     console.log(buffer.slice(0, bytesRead).toString());

15.                     //读取完后,再使用fd读取时,基点是基于上次读取位置计算;

16.                     fs.read(fd, buffer, 0, 9, null, function (err, bytesRead, buffer) {

17.                         console.log(bytesRead);

18.                         console.log(buffer.slice(0, bytesRead).toString());

19.                     });

20.                 }

21.             });

22.         }

23.     });

 

6、写文件,将缓冲区内数据写入使用fs.open打开的文件

//fs.write(fd, buffer, offset, length, position, callback);

/**

 * fd, 使用fs.open打开成功后返回的文件描述符

 * buffer, 一个Buffer对象,v8引擎分配的一段内存

 * offset, 整数,从缓存区中读取时的初始位置,以字节为单位

 * length, 整数,从缓存区中读取数据的字节数

 * position, 整数,写入文件初始位置;

 * callback(err, written, buffer), 写入操作执行完成后回调函数,written实际写入字节数,buffer被读取的缓存区对象

 */

 

1.        fs.open(__dirname + '/test.txt', 'a', function (err, fd) {

2.            if(err) {

3.                console.error(err);

4.                return;

5.            } else {

6.                var buffer = new Buffer('写入文件数据内容');

7.                //写入'入文件'三个字

8.                fs.write(fd, buffer, 3, 9, 12, function (err, written, buffer) {

9.                    if(err) {

10.                     console.log('写入文件失败');

11.                     console.error(err);

12.                     return;

13.                 } else {

14.                     console.log(buffer.toString());

15.                     fs.write(fd, buffer, 12, 9, null, function (err, written, buffer) {

16.                         console.log(buffer.toString());

17.                     })

18.                 }

19.             });

20.         }

21.     });

 

7、刷新缓存区;

// 使用fs.write写入文件时,操作系统是将数据读到内存,再把数据写入到文件中,当数据读完时并不代表数据已经写完,因为有一部分还可能在内在缓冲区内。

// 因此可以使用fs.fsync方法将内存中数据写入文件;--刷新内存缓冲区;

//fs.fsync(fd, [callback])

/**

 * fd, 使用fs.open打开成功后返回的文件描述符

 * [callback(err, written, buffer)], 写入操作执行完成后回调函数,written实际写入字节数,buffer被读取的缓存区对象

 */

1.        fs.open(__dirname + '/test.txt', 'a', function (err, fd) {

2.            if(err)

3.                throw err;

4.            var buffer = new Buffer('我爱nodejs编程');

5.         

6.            fs.write(fd, buffer, 0, 9, 0, function (err, written, buffer) {

7.                console.log(written.toString());

8.                fs.write(fd, buffer, 9, buffer.length - 9, null, function (err, written) {

9.                    console.log(written.toString());

10.                 fs.fsync(fd);

11.                 fs.close(fd);

12.             })

13.         });

14.     });

 

8、创建目录;

//使用fs.mkdir创建目录

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

/**

 * path, 被创建目录的完整路径及目录名;

 * [mode], 目录权限,默认0777

 * [callback(err)], 创建完目录回调函数,err错误对象

 */

1.        fs.mkdir(__dirname + '/fsDir', function (err) {

2.            if(err)

3.                throw err;

4.         

5.            console.log('创建目录成功')

6.        });

 

9、读取目录;

//使用fs.readdir读取目录,重点其回调函数中files对象

//fs.readdir(path, callback);

/**

 * path, 要读取目录的完整路径及目录名;

 * [callback(err, files)], 读完目录回调函数;err错误对象,files数组,存放读取到的目录中的所有文件名

 */

1.        fs.readdir(__dirname + '/fsDir/', function (err, files) {

2.            if(err) {

3.                console.error(err);

4.                return;

5.            } else {

6.                files.forEach(function (file) {

7.                    var filePath = path.normalize(__dirname + '/fsDir/' + file);

8.                    fs.stat(filePath, function (err, stat) {

9.                        if(stat.isFile()) {

10.                         console.log(filePath + ' is: ' + 'file');

11.                     }

12.                     if(stat.isDirectory()) {

13.                         console.log(filePath + ' is: ' + 'dir');

14.                     }

15.                 });

16.             });

17.             for (var i = 0; i < files.length; i++) {

18.                 //使用闭包无法保证读取文件的顺序与数组中保存的致

19.                 (function () {

20.                     var filePath = path.normalize(__dirname + '/fsDir/' + files[i]);

21.                     fs.stat(filePath, function (err, stat) {

22.                         if(stat.isFile()) {

23.                             console.log(filePath + ' is: ' + 'file');

24.                         }

25.                         if(stat.isDirectory()) {

26.                             console.log(filePath + ' is: ' + 'dir');

27.                         }

28.                     });

29.                 })();

30.             }

31.         }

32.     });

 

10、查看文件与目录的信息;

//fs.stat(path, callback);

//fs.lstat(path, callback); //查看符号链接文件

/**

 * path, 要查看目录/文件的完整路径及名;

 * [callback(err, stats)], 操作完成回调函数;err错误对象,stat fs.Stat一个对象实例,提供如:isFile, isDirectory,isBlockDevice等方法及size,ctime,mtime等属性

 */

//实例,查看fs.readdir

 

11、查看文件与目录的是否存在

//fs.exists(path, callback);

/**

 * path, 要查看目录/文件的完整路径及名;

 * [callback(exists)], 操作完成回调函数;exists true存在,false表示不存在

 */

1.        fs.exists(__dirname + '/te', function (exists) {

2.            var retTxt = exists ? retTxt = '文件存在' : '文件不存在';

3.            console.log(retTxt);

4.        });

 

12、修改文件访问时间与修改时间

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

/**

 * path, 要查看目录/文件的完整路径及名;

 * atime, 新的访问时间

 * ctime, 新的修改时间

 * [callback(err)], 操作完成回调函数;err操作失败对象

 */

 

1.        fs.utimes(__dirname + '/test.txt', new Date(), new Date(), function (err) {

2.            if(err) {

3.                console.error(err);

4.                return;

5.            }

6.            fs.stat(__dirname + '/test.txt', function (err, stat) {

7.                console.log('访问时间: ' + stat.atime.toString() + '; \n修改时间:' + stat.mtime);

8.                console.log(stat.mode);

9.            })

10.     });

 

13、修改文件或目录的操作权限

//fs.utimes(path, mode, callback);

/**

 * path, 要查看目录/文件的完整路径及名;

 * mode, 指定权限,如:0666 8进制,权限:所有用户可读、写,

 * [callback(err)], 操作完成回调函数;err操作失败对象

 */

 

1.        fs.chmod(__dirname + '/fsDir', 0666, function (err) {

2.            if(err) {

3.                console.error(err);

4.                return;

5.            }

6.            console.log('修改权限成功')

7.        });

 

14、移动/重命名文件或目录

//fs.rename(oldPath, newPath, callback);

/**

 * oldPath, 原目录/文件的完整路径及名;

 * newPath, 新目录/文件的完整路径及名;如果新路径与原路径相同,而只文件名不同,则是重命名

 * [callback(err)], 操作完成回调函数;err操作失败对象

 */

 

1.        fs.rename(__dirname + '/test', __dirname + '/fsDir', function (err) {

2.            if(err) {

3.                console.error(err);

4.                return;

5.            }

6.            console.log('重命名成功')

7.        });

15、删除空目录

//fs.rmdir(path, callback);

/**

 * path, 目录的完整路径及目录名;

 * [callback(err)], 操作完成回调函数;err操作失败对象

 */

1.        fs.rmdir(__dirname + '/test', function (err) {

2.            fs.mkdir(__dirname + '/test', 0666, function (err) {

3.                console.log('创建test目录');

4.            });

5.         

6.            if(err) {

7.                console.log('删除空目录失败,可能原因:1、目录不存在,2、目录不为空')

8.                console.error(err);

9.                return;

10.         }

11.      

12.         console.log('删除空目录成功!');

13.     });

 

16、监视文件

//对文件进行监视,并且在监视到文件被修改时执行处理

//fs.watchFile(filename, [options], listener);

/**

 * filename, 完整路径及文件名;

 * [options], persistent true表示持续监视,不退出程序;interval 单位毫秒,表示每隔多少毫秒监视一次文件

 * listener, 文件发生变化时回调,有两个参数:curr为一个fs.Stat对象,被修改后文件,prev,一个fs.Stat对象,表示修改前对象

 */

1.        fs.watchFile(__dirname + '/test.txt', {interval: 20}, function (curr, prev) {

2.            if(Date.parse(prev.ctime) == 0) {

3.                console.log('文件被创建!');

4.            } else if(Date.parse(curr.ctime) == 0) {

5.                console.log('文件被删除!')

6.            } else if(Date.parse(curr.mtime) != Date.parse(prev.mtime)) {

7.                console.log('文件有修改');

8.            }

9.        });

10.      

11.     fs.watchFile(__dirname + '/test.txt', function (curr, prev) {

12.         console.log('这是第二个watch,监视到文件有修改');

13.     });

 

17、取消监视文件

//取消对文件进行监视

//fs.unwatchFile(filename, [listener]);

/**

 * filename, 完整路径及文件名;

 * [listener], 要取消的监听器事件,如果不指定,则取消所有监听处理事件

 */

1.        var listener = function (curr, prev) {

2.            console.log('我是监视函数')

3.        }

4.        fs.unwatchFile(__dirname + '/test.txt', listener);

 

16、监视文件或目录

// 对文件或目录进行监视,并且在监视到修改时执行处理;

// fs.watch返回一个fs.FSWatcher对象,拥有一个close方法,用于停止watch操作;

// 当fs.watch有文件变化时,会触发fs.FSWatcher对象的change(err, filename)事件,err错误对象,filename发生变化的文件名

// fs.watch(filename, [options], [listener]);

/**

 * filename, 完整路径及文件名或目录名;

 * [listener(event, filename], 监听器事件,有两个参数:event 为rename表示指定的文件或目录中有重命名、删除或移动操作或change表示有修改,filename表示发生变化的文件路径

 */

 

1.        var fsWatcher = fs.watch(__dirname + '/test', function (event, filename) {

2.            //console.log(event)

3.        });

4.         

5.        //console.log(fsWatcher instanceof FSWatcher);

6.         

7.        fsWatcher.on('change', function (event, filename) {

8.            console.log(filename + ' 发生变化')

9.        });

10.      

11.     //30秒后关闭监视

12.     setTimeout(function () {

13.         console.log('关闭')

14.         fsWatcher.close(function (err) {

15.             if(err) {

16.                 console.error(err)

17.             }

18.             console.log('关闭watch')

19.         });

20.     }, 30000);

 

18、文件流

/*

 * 流,在应用程序中表示一组有序的、有起点有终点的字节数据的传输手段;

 * Node.js中实现了stream.Readable/stream.Writeable接口的对象进行流数据读写;以上接口都继承自EventEmitter类,因此在读/写流不同状态时,触发不同事件;

 * 关于流读取:Node.js不断将文件一小块内容读入缓冲区,再从缓冲区中读取内容;

 * 关于流写入:Node.js不断将流数据写入内在缓冲区,待缓冲区满后再将缓冲区写入到文件中;重复上面操作直到要写入内容写写完;

 * readFile、read、writeFile、write都是将整个文件放入内存而再操作,而则是文件一部分数据一部分数据操作;

 *

 * -----------------------流读取-------------------------------------

 * 读取数据对象:

 * fs.ReadStream 读取文件

 * http.IncomingMessage 客户端请求或服务器端响应

 * net.Socket    Socket端口对象

 * child.stdout  子进程标准输出

 * child.stdin   子进程标准入

 * process.stdin 用于创建进程标准输入流

 * Gzip、Deflate、DeflateRaw   数据压缩

 *

 * 触发事件:

 * readable  数据可读时

 * data      数据读取后

 * end       数据读取完成时

 * error     数据读取错误时

 * close     关闭流对象时

 *

 * 读取数据的对象操作方法:

 * read      读取数据方法

 * setEncoding   设置读取数据的编码

 * pause     通知对象众目停止触发data事件

 * resume    通知对象恢复触发data事件

 * pipe      设置数据通道,将读入流数据接入写入流;

 * unpipe    取消通道

 * unshift   当流数据绑定一个解析器时,此方法取消解析器

 *

 * ------------------------流写入-------------------------------------

 * 写数据对象:

 * fs.WriteStream           写入文件对象

 * http.clientRequest       写入HTTP客户端请求数据

 * http.ServerResponse      写入HTTP服务器端响应数据

 * net.Socket               读写TCP流或UNIX流,需要connection事件传递给用户

 * child.stdout             子进程标准输出

 * child.stdin              子进程标准入

 * Gzip、Deflate、DeflateRaw  数据压缩

 *

 * 写入数据触发事件:

 * drain            当write方法返回false时,表示缓存区中已经输出到目标对象中,可以继续写入数据到缓存区

 * finish           当end方法调用,全部数据写入完成

 * pipe             当用于读取数据的对象的pipe方法被调用时

 * unpipe           当unpipe方法被调用

 * error            当发生错误

 *

 * 写入数据方法:

 * write            用于写入数据

 * end              结束写入,之后再写入会报错;

 */

 

19、创建读取流

//fs.createReadStream(path, [options])

/**

 * path 文件路径

 * [options] flags:指定文件操作,默认'r',读操作;encoding,指定读取流编码;autoClose, 是否读取完成后自动关闭,默认true;start指定文件开始读取位置;end指定文件开始读结束位置

 */

1.        var rs = fs.createReadStream(__dirname + '/test.txt', {start: 0, end: 2});

2.         

3.        //open是ReadStream对象中表示文件打开时事件,

4.        rs.on('open', function (fd) {

5.            console.log('开始读取文件');

6.        });

7.         

8.        rs.on('data', function (data) {

9.            console.log(data.toString());

10.     });

11.      

12.     rs.on('end', function () {

13.         console.log('读取文件结束')

14.     });

15.      

16.     rs.on('close', function () {

17.         console.log('文件关闭');

18.     });

19.      

20.     rs.on('error', function (err) {

21.         console.error(err);

22.     });

23.      

24.     //暂停和回复文件读取;

25.      

26.     rs.on('open', function () {

27.         console.log('开始读取文件');

28.     });

29.      

30.     rs.pause();

31.      

32.     rs.on('data', function (data) {

33.         console.log(data.toString());

34.     });

35.      

36.     setTimeout(function () {

37.         rs.resume();

38.     }, 2000);

20、创建写入流

//fs.createWriteStream(path, [options])

/**

 * path 文件路径

 * [options] flags:指定文件操作,默认'w',;encoding,指定读取流编码;start指定写入文件的位置

 */

 

/* ws.write(chunk, [encoding], [callback]);

 * chunk,  可以为Buffer对象或一个字符串,要写入的数据

 * [encoding],  编码

 * [callback],  写入后回调

 */

 

/* ws.end([chunk], [encoding], [callback]);

 * [chunk],  要写入的数据

 * [encoding],  编码

 * [callback],  写入后回调

 */

 

1.        var ws = fs.createWriteStream(__dirname + '/test.txt', {start: 0});

2.         

3.        var buffer = new Buffer('我也喜欢你');

4.         

5.         

6.        ws.write(buffer, 'utf8', function (err, buffer) {

7.            console.log(arguments);

8.            console.log('写入完成,回调函数没有参数')

9.        });

10.      

11.     //最后再写入的内容

12.     ws.end('再见');

13.      

14.     //使用流完成复制文件操作

15.     var rs = fs.createReadStream(__dirname + '/test.txt')

16.     var ws = fs.createWriteStream(__dirname + '/test/test.txt');

17.     rs.on('data', function (data) {

18.         ws.write(data)

19.     });

20.      

21.     ws.on('open', function (fd) {

22.         console.log('要写入的数据文件已经打开,文件描述符是: ' + fd);

23.     });

24.      

25.     rs.on('end', function () {

26.         console.log('文件读取完成');

27.      

28.         ws.end('完成', function () {

29.             console.log('文件全部写入完成')

30.         });

31.     });

 

//关于WriteStream对象的write方法返回一个布尔类型,当缓存区中数据全部写满时,返回false;

//表示缓存区写满,并将立即输出到目标对象中

 

//第一个例子

1.        var ws = fs.createWriteStream(__dirname + '/test/test.txt');

2.        for (var i = 0; i < 10000; i++) {

3.            var w_flag = ws.write(i.toString());

4.            //当缓存区写满时,输出false

5.            console.log(w_flag);

6.        }

 

//第二个例子

1.        var ws = fs.createWriteStream(__dirname + '/test/untiyou.mp3');

2.        var rs = fs.createReadStream(__dirname + '/test/Until You.mp3');

3.        rs.on('data', function (data) {

4.            var flag = ws.write(data);

5.            console.log(flag);

6.        });

7.         

8.        //系统缓存区数据已经全部输出触发drain事件

9.        ws.on('drain', function () {

10.         console.log('系统缓存区数据已经全部输出。')

11.     });

 

21、管道pipe实现流读写

//rs.pipe(destination, [options]);

/**

 * destination 必须一个可写入流数据对象

 * [opations] end 默认为true,表示读取完成立即关闭文件;

 */

 

1.        var rs = fs.createReadStream(__dirname + '/test/Until You.mp3');

2.        var ws = fs.createWriteStream(__dirname + '/test/untiyou.mp3');

3.        rs.pipe(ws);

4.         

5.        rs.on('data', function (data) {

6.            console.log('数据可读')

7.        });

8.         

9.        rs.on('end', function () {

10.         console.log('文件读取完成');

11.         //ws.end('再见')

12.     });

 

//---------------------路径操作-------------------------

22、路径解析,得到规范化的路径格式

//对window系统,目录分隔为'\', 对于UNIX系统,分隔符为'/',针对'..'返回上一级;/与\\都被统一转换

//path.normalize(p);

 

1.        var myPath = path.normalize(__dirname + '/test/a//b//../c/utilyou.mp3');

2.        console.log(myPath); //windows: E:\workspace\NodeJS\app\fs\test\a\c\utilyou.mp3

 

23、路径结合、合并,路径最后不会带目录分隔符

//path.join([path1],[path2]..[pathn]);

/**

 * [path1] 路径或表示目录的字符,

 */

 

1.        var path1 = 'path1',

2.            path2 = 'path2//pp\\',

3.            path3 = '../path3'

4.         

5.        var myPath = path.join(path1, path2, path3);

6.        console.log(myPath); //path1\path2\path3

24、获取绝对路径

//path.resolve(path1, [path2]..[pathn]);

//以应用程序为起点,根据参数字符串解析出一个绝对路径

/**

 * path 必须至少一个路径字符串值

 * [pathn] 可选路径字符串

 */

1.        var myPath = path.resolve('path1', 'path2', 'a/b\\c/');

2.        console.log(myPath);//E:\workspace\NodeJS\path1\path2\a\b\c

 

25、获取相对路径

//path.relative(from, to);

//获取两路径之间的相对关系

/**

 * from 当前路径,并且方法返回值是基于from指定到to的相对路径

 * to   到哪路径,

 */

1.        var from = 'c:\\from\\a\\',

2.            to = 'c:/test/b';

3.        var _path = path.relative(from, to);

4.        console.log(_path); //..\..\test\b; 表示从from到to的相对路径

 

26、path.dirname(p)

// 获取路径中目录名

1.        var myPath = path.dirname(__dirname + '/test/util you.mp3');

2.        console.log(myPath);

 

27、path.basename(path, [ext])

// 获取路径中文件名,后缀是可选的,如果加,请使用'.ext'方式来匹配,则返回值中不包括后缀名;

1.        var myPath = path.basename(__dirname + '/test/util you.mp3', '.mp3');

2.        console.log(myPath);

 

28、path.extname(path)

获取路径中的扩展名,如果没有'.',则返回空

 

29、path.sep属性

返回操作系统中文件分隔符; window是'\\', Unix是'/'

 

30、path.delimiter属性

返回操作系统中目录分隔符,如window是';', Unix中是':'

 

 

参考:

《Node.js权威指南》之在Node.js中操作文件系统

Email:gaojun_le@163.com


转自:https://www.cnblogs.com/gaojun/p/4159488.html

nodeJs练习项目 结构简洁 注释全面 nodeJs综合练习项目,实现基础的静态页面引擎,请求引擎 立即下载

相关推荐

NodeJS学习笔记和代码

学习nodejs必看笔记文档并附带随堂代码,nodejs学习上手必看

NodeJs文件操作备注

转载来源 Node.js文件系统、路径的操作函数 目录 Node.js文件系统、路径的操作函数 1、读取文件readFile函数 2、写文件 3、以追加方式写文件 4、打开文件 5、读文件,读取打开的文件内容到缓冲区中; 6、写文件,将缓冲区内数据写入使用fs.open打开的文件 7、刷新缓存区; 8、创建目录; 9、读取目录; 10、查看文件与目录的信息;

Bennes的专栏 1203

冰河木马实验(V8.4)

简述: 百科词条 冰河木马开发于1999年,跟灰鸽子类似,在设计之初,开发者的本意是编写一个功能强大的远程控制软件。但一经推出,就依靠其强大的功能成为了黑客们发动入侵的工具,并结束了国外木马一统天下的局面,跟后来的灰鸽子等等成为国产木马的标志和代名词。 冰河的服务器端程序为G-server.exe,客户端程序为G-client.exe,默认连接端口为7626。其中攻击者使用G-client.e...

野原新之助 1万+

文件顶部添加【文件名注释】

文件顶部添加【文件名注释】

weixin_45805749的博客 314

QST QMC5883L —— 经典磁传感器的生存指南与替代预案

本文聚焦于QST旗下经典三轴磁力计 QMC5883L,解析其技术渊源、核心特性及当前面临的停产风险。结合真实应用场景提供续命方案与选型建议,为依赖该芯片的开发团队争取过渡时间窗口期。文章包含实测数据对比、生命周期管理策略及潜在替代方案拆解。存续价值判断✔️ 现有产品设计无需大幅改动即可延续生命;❌ 新项目采用将面临更高的维护成本;⚠️ 建议在6个月内完成技术路线切换。#磁传感器 #嵌入式开发 #供应链管理 #QST #QMC5883L。

2501_93066786的博客 997

携程旅行网景区,评论数据爬虫项目数据库保存附源码

这是一个专门用于爬取某旅行网景区评论数据的Python爬虫项目。项目采用模块化设计,支持MySQL数据库存储,具备完整的异常处理机制和反爬虫策略。

ymqzhy的博客 2568

nodejs中如何获得视频文件属性中的详细信息

nodejs中如何获得视频文件属性中的详细信息。

weixin_48195773的博客 414

用Linkboy玩转Arduino:3小时搞定智能倒车雷达(附仿真文件下载)

本文详细介绍了如何利用Linkboy图形化编程工具,在3小时内快速搭建一个基于Arduino的智能倒车雷达项目。通过仿真环境,初学者无需硬件即可学习超声波测距原理、报警逻辑设计,并完成从虚拟仿真到实体硬件的完整流程。文章提供了清晰的步骤、调试技巧及功能扩展思路,并附有仿真文件,是入门Arduino和智能硬件制作的绝佳实践指南。

weixin_29159441的博客 403

nodeJs--各种路径

我们点击文件右键复制路径的那个路径就是本地绝对路径,比如我们要取到bilibili-img.png图片,直接右键复制路径G\H5\dom\app\img\bilibili-img.png这个就是绝对路径。简单来说就是这个文件页面是在本地打开,然后相对于这个文件的路径,比如"./“就表示跟这个文件是同一级的文件也可以省略”./“直接输入文件名,”../“则表示跟这个文件的父级同级。它真正的网址“http//www.baidu.com/user/src/baiddu.jpg”...

qq_56973906的博客 2558

高温环境下RS485通信故障分析与MOS管解决方案

RS485通信作为工业控制领域的基础总线技术,其可靠性直接影响系统稳定性。在高温等恶劣环境下,传统三极管开关电路会因温度特性导致通信故障。通过分析三极管Ube电压随温度变化的特性,揭示了电路失效的物理原理。相比之下,MOS管作为电压控制型器件,具有温度稳定性好、功耗低等优势,更适合工业环境应用。本文通过一个发动机舱内RS485通信故障的实际案例,详细对比了三极管与MOS管在高温环境下的性能差异,并给出了具体的电路改进方案。该案例对工业通信接口设计具有普遍参考价值,特别适用于需要应对高温、振动等挑战性环境的硬

weixin_42612405的博客 406

auto.js梦幻西游游戏脚本,梦幻西游脚本开发思路

本篇文章给大家谈谈梦幻西游脚本用什么语言写,以及auto.js梦幻西游游戏脚本,希望对各位有所帮助,不要忘了收藏本站喔。

npy199331的博客 1939

Node.js中的文件路径

Node.js中的文件路径

二木成林 3746

国科大作业考试资料-人工智能原理与算法-2024新编-第十一次作业整理

1、有一位教授想知道学生是否睡眠充足。每天,教授观察学生在课堂 上是否睡觉,并观察他们是否有红眼。教授获得如下的领域知识: (1)没有观察数据时,学生睡眠充足的先验概率为0.7。 (2)给定学生前一天睡眠充足为条件,学生在晚上睡眠充足的概率是0.8;如果前一天睡眠不充足,则是0.3。 (3)如果学生睡眠充足,则红眼的概率是0.2,否则是0.7。 (4)如果学生睡眠充足,则在课堂上睡觉的概率是0.1,否则是0.3。 将这些信息形式化为一个动态贝叶斯网络,使教授可以使用这个网络从观察序列中进行滤波和预

MatsumotoChrikk 1055

Node.js 文件系统操作指南

本文将深入探讨 Node.js 中的文件系统(fs)模块,它是 Node.js 中进行文件读写的核心模块。通过详细解释各种文件操作方法,本文将帮助您更好地理解和应用 Node.js 进行文件系统的操作。

球球不吃虾WHR2349博客 2440

【即插即用模块】卷积篇 | CVPR 2025 | LSConv:大核捕全局,小核提速度,替换 3×3 卷积/自注意力,精度效率双飙升

文章摘要: LSConv是一种新型卷积模块,采用"大核感知+小核聚合"策略,在轻量级视觉任务中表现出色。该模块由两部分组成:7×7深度可分离卷积(LKP)捕捉全局信息,动态3×3卷积(SKA)实现高效特征聚合。相比传统卷积和自注意力机制,LSConv在降低计算量的同时提升了精度,尤其适合高分辨率视觉任务。实验表明,在轻量化模型中用LSConv替代3×3卷积或自注意力,可显著减少计算量并提高准确率。模块支持即插即用,提供Triton优化实现,可直接集成到现有卷积或Transformer架构

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1119

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Node.js学习笔记——认识nodejs、详解fs文件系统模块与path路径模块

1.初识 Node.js 浏览器中的 JavaScript 的组成部分 为什么 JavaScript 可以在浏览器中被执行 不同的浏览器使用不同的 JavaScript 解析引擎 Chrome 浏览器 => V8 Firefox 浏览器 => OdinMonkey(奥丁猴) Safri浏览器 => JSCore IE 浏览器 => Chakra(查克拉) 其中,Chrome 浏览器的 V8 解析引擎性能最好! 为什么 JavaScript 可以操作 DOM 和 BOM

timerring的博客 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Node JS 基础知识:Node JS 中的路径模块

Node.js提供了异步和事件驱动的架构,但最重要的是Node.js的核心模块。Node.js有许多模块,使开发人员的生活更轻松,其中一个是 Node JS 中的路径模块,它非常高效和有用,为我们提供了访问和操作文件系统中。此方法解析从右侧到左侧的路径,并在构造生成的绝对路径之前为每个路径添加前缀。path 模块中有许多重要且有用的函数,用于在开发项目时处理文件或目录的路径。通俗地说,它返回目录的名称或文件路径引用的文件。假设我们想知道存在图像的目录名称,并且我们以字符串的形式传递了整个文件路径。

新华编程特战队 1812

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Node.js——文件模块和路径模块(读写文件,处理路径)

nodejs基础知识,fs文件模块和path路径模块,快来学习一下吧...

HuoZhiyan 的博客 3749

文件系统操作:Node.js 中的 fs 模块完全指南

fs模块是 Node.js 内置的一个模块,它提供了与文件系统交互的 API,支持对文件和目录的读取、写入、修改、删除等操作。fs模块可以操作本地文件系统,并且支持同步和异步两种工作方式。通常,我们会优先使用异步操作,因为它能够提高应用的性能,避免阻塞事件循环。fs模块是 Node.js 中非常重要的模块,它提供了对文件系统的多种操作接口。通过掌握fs模块的基本用法,你可以轻松地进行文件读写、删除、重命名、目录操作等任务。在实践中,尽量使用异步 API 来提升性能,并善于使用流来处理大文件。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 2276

Node.js 入门 —— fs 文件系统模块

本文内容来自bilibili黑马程序员Node官网Node.js 是一个基于 Chrome V8 引擎的JavaScript运行环境终端(terminal)是专门为开发人员设计的,用于实现人机交互的一种方式常用终端命令:tab:快速补全文件路径esc:清空当前命令(Ctrl + u)cls:清空当前终端(mac:clear)fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

Yana's Blog 1388

JavaScript 在 Node.js 环境中的应用

核心技术主题为 JavaScript 在 Node.js 环境的应用。关键方案包括搭建环境、操作文件系统、搭建服务器、模块化开发等。创新点是让 JS 可在服务器端运行,统一前后端技术栈。应用场景涵盖 Web 应用开发等,实践价值在于拓展 JS 应用范围,借助框架可高效开发,推动了 JS 在服务器端的应用发展。

专注技术分享 720

Node.js——path(路径操作)模块

本篇文章我们学习如何使用Node.js对路径进行操作。

HuoZhiyan 的博客 1718

[node] Node.js的文件系统

Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。

前端 1936

如何在 Node.js 中使用文件系统

Web 应用程序并不总是需要写入文件系统,但 Node.js 提供了一个全面的应用程序编程接口 (API) 来实现这一点。如果您要输出调试日志、将文件传输到服务器或从服务器传输文件,或者创建命令行工具,那么它可能是必不可少的。

weixin_41422591的博客 1360

node.js学习笔记(一):什么是node.js、fs 文件系统模块、path 路径模块、综合案例 - 时钟案例

fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。例如:⚫方法,用来读取指定文件中的内容⚫方法,用来向指定的文件中写入内容如果要在 JavaScript 代码中,使用 fs 模块来操作文件,则需要使用如下的方式先导入它:2.2读取指定文件中的内容。

weixin_62764364的博客 722

Node.js中的FS文件系统、path、模块化、npm与包以及数据库操作

本文自在帮助初学者学习Node.js中的FS文件系统、path、模块化、npm与包以及数据库操作

qq_63946637的博客 2739
上一篇: 这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已
下一篇: js的document.all是个坑 !
! 不再维护
博客等级 码龄11年 63粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值