Node js之fs模块学习
<p> </p><p><span style="font-size: 18pt"><strong>学习nodejs还有很多的不懂,现在写下我学习的心得以及整理下笔记:</strong></span></p>
<p> </p>
<p><span style="font-size: 13px">下面是我整理的笔记:</span></p>
<p> </p>
<p> 1、<strong>初识node.js</strong></p>
<p> 简单的说Node.js 就是运行在服务器端的JavaScript。</p>
<p> Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。</p>
<p> Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。</p>
<p> Node.js 的包管理器 npm,是全球最大的开源库生态系统。</p>
<p> <span style="color: rgba(255, 0, 0, 1); font-size: 16px">Node.js官网</span>:https://nodejs.org/en</p>
<p> <span style="font-size: 16px"><span style="color: rgba(255, 0, 0, 1)">npm官网</span>:</span>https://www.npmjs.com</p>
<p> </p>
<p> 2、<strong>node.js命令介绍(cmd终端执行)</strong></p>
<p> 查看node版本: node –v</p>
<p> 查看npm版本:npm -v</p>
<p> 进入node环境:node</p>
<p> 退出node环境:两次ctrl+c</p>
<p> </p>
<p> 3、<strong>nodejs内置模块</strong></p>
<p><strong> </strong>NodeJS<span style="font-family: 宋体">没有自己的语法,</span><span style="font-family: Consolas">JS</span><span style="font-family: 宋体">能写什么,</span><span style="font-family: Consolas">node</span><span style="font-family: 宋体">就能运行什么</span></p>
<p> </p>
<p class="MsoNormal"><span style="font-family: 宋体"> <span style="color: rgba(255, 0, 0, 1)"> ***但是要注意,</span></span><span style="color: rgba(255, 0, 0, 1)"><span style="font-family: 宋体"><span style="font-family: 宋体">仅限于</span>JS<span style="font-family: 宋体">语言核心部分。</span><span style="font-family: Consolas">DOM</span><span style="font-family: 宋体">、</span><span style="font-family: Consolas">BOM</span><span style="font-family: 宋体">不能用,</span><span style="font-family: Consolas">node</span><span style="font-family: 宋体">没有浏览器的那些东西</span></span><span style="font-family: 宋体">。**</span></span></p>
<p><span style="font-family: 宋体"> <span style="font-size: 16px"><strong><span style="color: rgba(255, 0, 0, 1)">Nodejs fs模块官网</span></strong></span>:http://nodejs.cn/api/fs.html</span></p>
<p><span style="font-family: 宋体"> </span><span style="font-family: 宋体; font-size: 10.5pt">fs</span><span style="font-family: 宋体; font-size: 10.5pt">是</span><span style="font-size: 10.5pt; font-family: Consolas">file system</span><span style="font-family: 宋体; font-size: 10.5pt">文件系统的意思,提供了对文件的所有操作。</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"> var</span> fs=require(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">fs</span><span style="color: rgba(128, 0, 0, 1)">"</span>);</pre>
</div>
<p> </p>
<p> <span style="font-family: 宋体; font-size: 10.5pt">fs</span><span style="font-family: 宋体; font-size: 10.5pt">模块有个方法叫</span><span style="font-size: 10.5pt; font-family: Consolas">readFile</span><span style="font-family: 宋体; font-size: 10.5pt">,可以异步读文件内容</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">err参数:错误信息,没有错误将返回null
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">data参数:返回文件的内容</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 255, 1)">var</span> fs = require(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">fs</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> fs.readFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./aaa/01.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span>, function(err, date) {<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">readFile F一定要大写</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)">(err){
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> console.log(err + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">打开文件夹错误</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">读取的是信息流,是Buffer是缓冲的二进制,用toString()转为字符串</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)"> console.log(date.toString());
</span><span style="color: rgba(0, 128, 128, 1)">11</span> });</pre>
</div>
<p> </p>
<p> 运行结果如下:</p>
<p><img src="https://img2018.cnblogs.com/blog/1642841/201905/1642841-20190508171653207-1985483419.png" alt=""></p>
<p> </p>
<p> 在Nodejs<span style="font-family: 宋体">中要适应回调套回调函数,写法如下:</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">var</span> fs = require(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">fs</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> fs.readFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./test1.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,function(err,data){
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)"> console.log(data.toString());
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> fs.readFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./test2.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,function(err,data){
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 0, 1)"> console.log(data.toString());
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> fs.readFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./test3.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,function(err,data){
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)"> console.log(data.toString());
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">13</span> });</pre>
</div>
<p> </p>
<p>如果不想写异步回调函数,可以使用同步版本的函数,写法如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">var</span> data = fs.readFileSync(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">AAA.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">2</span> console.log(data);</pre>
</div>
<p> </p>
<p> </p>
<p><strong><span style="font-size: 18px">fs.writeFile()是写入文件的方法</span></strong></p>
<p> 那么有读就必须有写,fs.writeFile()是<span style="font-family: 宋体">写入文件的方法:</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">同步函数</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> fs.writeFileSync(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">BBB.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Hello World</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">异步函数</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> fs.readFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">AAA.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,function (err,data) {
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (err) <span style="color: rgba(0, 0, 255, 1)">throw</span><span style="color: rgba(0, 0, 0, 1)"> err;
</span><span style="color: rgba(0, 128, 128, 1)">7</span> <span style="color: rgba(0, 0, 0, 1)"> console.log(data);
</span><span style="color: rgba(0, 128, 128, 1)">8</span> });</pre>
</div>
<p> </p>
<p> 读写操作:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">读写操作:
</span><span style="color: rgba(0, 128, 128, 1)">2</span> fs.readFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">AAA.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,function (err,data) {
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (err) <span style="color: rgba(0, 0, 255, 1)">throw</span><span style="color: rgba(0, 0, 0, 1)"> err;
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将读取到的文件内容写入CCC文件中</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> fs.writeFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">CCC.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, data);
</span><span style="color: rgba(0, 128, 128, 1)">6</span> });</pre>
</div>
<p> </p>
<p> 写读操作:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">var</span> fs=require(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">fs</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">{ 'flag': 'a'}追加参数,使写入的时候不会清空原来的写入的值。传递了追加参数 { 'flag': 'a' }
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">"\n"或者"\r"表示输出的内容换行。</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> fs.writeFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./aaa/01.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Hello World</span><span style="color: rgba(128, 0, 0, 1)">"</span>+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\n</span><span style="color: rgba(128, 0, 0, 1)">"</span>,{ <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">flag</span><span style="color: rgba(128, 0, 0, 1)">'</span>: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">a</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">},function(err,date){
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)">(err){
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> console.log(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">写入错误</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">任意的,写入的时候它先执行并先显示。</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> console.log(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">aaa</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">11</span> fs.readFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./aaa/01.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, function(err, date){
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)"> console.log(date.toString());
</span><span style="color: rgba(0, 128, 128, 1)">13</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">15</span> console.log(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">b</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">16</span> })</pre>
</div>
<p><span style="font-size: 13px">执行如下:</span></p>
<p><span style="font-size: 13px"><img src="https://img2018.cnblogs.com/blog/1642841/201905/1642841-20190508192252997-1821889030.png" alt=""></span></p>
<p> </p>
<p><strong><span style="font-size: 18px">fs.mkdir()<span style="font-family: 宋体">创建文件夹</span></span></strong></p>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 创建文件夹 同步函数</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> fs.mkdirSync(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">stuff</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 创建文件夹(异步函数) 并 读写文件</span>
<span style="color: rgba(0, 128, 128, 1)">4</span> fs.mkdir(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">fileTxt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, function() {
</span><span style="color: rgba(0, 128, 128, 1)">5</span> fs.readFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">AAA.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,function (err,data) {
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (err) <span style="color: rgba(0, 0, 255, 1)">throw</span><span style="color: rgba(0, 0, 0, 1)"> err;
</span><span style="color: rgba(0, 128, 128, 1)">7</span> fs.writeFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./fileTxt/DDD.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, data);
</span><span style="color: rgba(0, 128, 128, 1)">8</span> <span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">9</span> });</pre>
</div>
<p> </p>
<p><span style="font-size: 18px"><strong>fs.unlink()删除文件夹</strong></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 删除文件(异步)</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> fs.unlink(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">AAA.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 删除文件夹(同步)</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> fs.rmdirSync(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">img</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 删除文件(异步)并 删除文件夹(异步)</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> fs.unlink(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./txt/AAA.txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,function(){
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> fs.rmdir(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">txt</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">10</span> });</pre>
</div>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
转载请说明!<br><br>
来源:https://www.cnblogs.com/xuyx/p/10833125.html
頁:
[1]