Node.js文件操作一
2023-09-14 08:57:59 时间
Node.js和其他语言一样,也有文件操作。先不说node.js中的文件操作,其他语言的文件操作一般也都是有打开、关闭、读、写、文件信息、新建删除目录、删除文件、检测文件路径等。在node.js中也是一样,也都是这些功能,可能就是api与其他语言不太一样。
一、同步、异步打开关闭
/** * Created by Administrator on 2016/3/21. var fs=require("fs"); //同步读 fs.openSync = function(path, flags, mode) //模块fs.js文件中如上面定义的openSync 函数3个参数 //.1.path 文件路径 //2.flags 打开文件的模式 //3.model 设置文件访问模式 //fd文件描述 var fd=fs.openSync("data/openClose.txt",w); //fs.closeSync = function(fd) fs.closeSync(fd); //异步读写 //fs.open = function(path, flags, mode, callback_) //fs.close = function(fd, callback) fs.open("data/openColse1.txt",w,function(err,fd) { if (!err) fs.close(fd,function(){ console.log("closed"); });
其中的flags其他语言也会有.其实主要分3部分 r、w、a.和C中的差不多。
1.r —— 以只读方式打开文件,数据流的初始位置在文件开始
2.r+ —— 以可读写方式打开文件,数据流的初始位置在文件开始
3.w ——如果文件存在,则将文件长度清0,即该文件内容会丢失。如果不存在,则尝试创建它。数据流的初始位置在文件开始
4.w+ —— 以可读写方式打开文件,如果文件不存在,则尝试创建它,如果文件存在,则将文件长度清0,即该文件内容会丢失。数据流的初始位置在文件开始
5.a —— 以只写方式打开文件,如果文件不存在,则尝试创建它,数据流的初始位置在文件末尾,随后的每次写操作都会将数据追加到文件后面。
6.a+ ——以可读写方式打开文件,如果文件不存在,则尝试创建它,数据流的初始位置在文件末尾,随后的每次写操作都会将数据追加到文件后面。
二、读写
1.简单文件读写
/** * Created by Administrator on 2016/3/21. var fs = require(fs); var config = { maxFiles: 20, maxConnections: 15, rootPath: "/webroot" var configTxt = JSON.stringify(config); var options = {encoding:utf8, flag:w}; //options 定义字符串编码 打开文件使用的模式 标志的encoding、mode、flag属性 可选 //fs.writeFile = function(path, data, options, callback_) //fs.writeFileSync = function(path, data, options) fs.writeFile(data/config.txt, configTxt, options, function(err){ if (err){ console.log("Config Write Failed."); } else { console.log("Config Saved."); readFile(); function readFile() var fs = require(fs); var options = {encoding:utf8, flag:r}; //异步 //fs.readFile = function(path, options, callback_) //同步 //fs.readFileSync = function(path, options) fs.readFile(data/config.txt, options, function(err, data){ if (err){ console.log("Failed to open Config File."); } else { console.log("Config Loaded."); var config = JSON.parse(data); console.log("Max Files: " + config.maxFiles); console.log("Max Connections: " + config.maxConnections); console.log("Root Path: " + config.rootPath); }
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe SimpleReadWrite.js Config Saved. Config Loaded. Max Files: 20 Max Connections: 15 Root Path: /webroot Process finished with exit code 0
/** * Created by Administrator on 2016/3/21. var fs = require(fs); var veggieTray = [carrots, celery, olives]; fd = fs.openSync(data/veggie.txt, w); while (veggieTray.length){ veggie = veggieTray.pop() + " "; //系统api //fd 文件描述 第二个参数是被写入的String或Buffer // offset是第二个参数开始读的索引 null是表示当前索引 //length 写入的字节数 null一直写到数据缓冲区末尾 //position 指定在文件中开始写入的位置 null 文件当前位置 // fs.writeSync(fd, buffer, offset, length[, position]); // fs.writeSync(fd, string[, position[, encoding]]); //fs.writeSync = function(fd, buffer, offset, length, position) var bytes = fs.writeSync(fd, veggie, null, null); console.log("Wrote %s %dbytes", veggie, bytes); fs.closeSync(fd); var fs = require(fs); fd = fs.openSync(data/veggie.txt, r); var veggies = ""; var buf = new Buffer(5); buf.fill(); //fs.readSync = function(fd, buffer, offset, length, position) var bytes = fs.readSync(fd, buf, null, 5); console.log("read %dbytes", bytes); veggies += buf.toString(); } while (bytes fs.closeSync(fd); console.log("Veggies: " + veggies);
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe syncReadWrite.js Wrote olives 7bytes Wrote celery 7bytes Wrote carrots 8bytes read 5bytes read 5bytes read 5bytes read 5bytes read 2bytes read 0bytes Veggies: olives celery carrots Process finished with exit code 0
/** * Created by Administrator on 2016/3/21. var fs = require(fs); var fruitBowl = [apple, orange, banana, grapes]; function writeFruit(fd){ if (fruitBowl.length){ var fruit = fruitBowl.pop() + " "; // fs.write(fd, buffer, offset, length[, position], callback); // fs.write(fd, string[, position[, encoding]], callback); // fs.write = function(fd, buffer, offset, length, position, callback) fs.write(fd, fruit, null, null, function(err, bytes){ if (err){ console.log("File Write Failed."); } else { console.log("Wrote: %s %dbytes", fruit, bytes); writeFruit(fd); } else { fs.close(fd); ayncRead(); fs.open(data/fruit.txt, w, function(err, fd){ writeFruit(fd);
//fs.read = function(fd, buffer, offset, length, position, callback) fs.read(fd, buf, 0, 5, null, function(err, bytes, data){ if ( bytes 0) { console.log("read %dbytes", bytes); fruits += data; readFruit(fd, fruits); } else { fs.close(fd); console.log ("Fruits: %s", fruits); fs.open(data/fruit.txt, r, function(err, fd){ readFruit(fd, ""); }
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe asyncReadWrite.js Wrote: grapes 7bytes Wrote: banana 7bytes Wrote: orange 7bytes Wrote: apple 6bytes read 5bytes read 5bytes read 5bytes read 5bytes read 5bytes read 2bytes Fruits: grapes banana orange apple Process finished with exit code 04.流式读写
/** * Created by Administrator on 2016/3/21. var fs = require(fs); var grains = [wheat, rice, oats]; var options = { encoding: utf8, flag: w }; //从下面的系统api可以看到 createWriteStream 就是创建了一个writable流 //fs.createWriteStream = function(path, options) { // return new WriteStream(path, options); //util.inherits(WriteStream, Writable); //fs.WriteStream = WriteStream; //function WriteStream(path, options) var fileWriteStream = fs.createWriteStream("data/grains.txt", options); fileWriteStream.on("close", function(){ console.log("File Closed."); //流式读 streamRead(); while (grains.length){ var data = grains.pop() + " "; fileWriteStream.write(data); console.log("Wrote: %s", data); fileWriteStream.end(); //流式读 function streamRead() var fs = require(fs); var options = { encoding: utf8, flag: r }; //fs.createReadStream = function(path, options) { // return new ReadStream(path, options); //}; //util.inherits(ReadStream, Readable); //fs.ReadStream = ReadStream; //function ReadStream(path, options) //createReadStream 就是创建了一个readable流 var fileReadStream = fs.createReadStream("data/grains.txt", options); fileReadStream.on(data, function(chunk) { console.log(Grains: %s, chunk); console.log(Read %d bytes of data., chunk.length); fileReadStream.on("close", function(){ console.log("File Closed."); }
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe StreamReadWrite.js Wrote: oats Wrote: rice Wrote: wheat File Closed. Grains: oats rice wheat Read 16 bytes of data. File Closed. Process finished with exit code 0
node使用 nodemon 来监听文件变化 知识边界: nodemon 就像是vue里面的开启热加载功能一样,开发者只要放心开发,不用修改一点就需要重新启动项目,进行测试
Node 项目通过 .npmrc 文件指定依赖安装源 `npm` 命令运行时,往往通过命令行指定相关配置,最常用的便是使用 `--registry` 来指定依赖的安装源。`.npmrc`(NPM Running Configuration)可以指定 `npm` 命令运行时的配置内容。
社会主义 从.Net到iOS,在撸的道路上越走越远,工作之余经营着博客园http://www.cnblogs.com/5ishare,欢迎小伙伴(妹子更好)一起交流,谈谈人生理想。作为经常从网上索取免费资料的一员,要有回报回报的思想,也让更多的人少走弯路.
相关文章
- Fabric.js 使用纯色遮挡画布(前景色)
- js 实现二叉树后序遍历
- yuicompressor java_使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件
- Node.js学习笔记(二)——Node.js模块化、文件读写、环境变量
- Node.js中读写文件操作
- Vue.js – 引入外部 JS 文件
- pdf.js预览pdf文件流(base64)
- JavaScript、js文件、Node.js、静态文件
- 在 Node.js 里使用 multiparty 上传文件
- 一款用GO语言编写的JS爬取工具~
- Node.js实现大文件断点续传_2023-02-24
- 原生 JS 实现 HTML 转 Markdown,以及其实现逻辑(html2md.js 或 html2markdown.js)
- 使用js加载器动态加载外部Javascript文件详解编程语言
- Linux环境下配置Node.js(linux配置node)
- 创建JS文件:在Linux下实现自动化任务(linux创建js文件)
- 数据Node.js实现MySQL数据的同步更新(node同步mysql)
- Linux上的JS压缩工具(js压缩工具linux)
- 利用Node.js实现对MS SQL服务器的连接(node连MSsql)
- js文件中调用js的实现方法小结
- js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
- 多个js与css文件的合并方法详细说明
- js获取坐标通过JS得到当前焦点(鼠标)的坐标属性
- 动态加载js和css(外部文件)
- 动态创建script在IE中缓存js文件时导致编码的解决方法
- php实现压缩多个CSS与JS文件的方法
- node.js中的console.dir方法使用说明
- node.js实现逐行读取文件内容的代码
- 使用jquery动态加载js文件的方法
- 给js文件传参数(详解)
- Node.js实现在目录中查找某个字符串及所在文件