Node.js——fs模塊(文件系統),創建、刪除目錄(文件),讀取寫入文件流

来源:https://www.cnblogs.com/jokehl/archive/2018/10/28/9866317.html
-Advertisement-
Play Games

作者:houyanhua1 鏈接:https://blog.csdn.net/houyanhua1/article/details/79443987 來源:CSDN ...


  1 /* 
  2  1. fs.stat  檢測是文件還是目錄(目錄 文件是否存在) 
  3  2. fs.mkdir  創建目錄 (創建之前先判斷是否存在) 
  4  3. fs.writeFile  寫入文件(文件不存在就創建,但不能創建目錄) 
  5  4. fs.appendFile 寫入追加文件 
  6  5. fs.readFile 讀取文件 
  7  6. fs.readdir 讀取目錄 
  8  7. fs.rename 重命名 
  9  8. fs.rmdir  刪除目錄 
 10  9. fs.unlink 刪除文件 
 11 */
 12  
 13 var fs=require('fs');   //fs是node.js的核心模塊,不用下載安裝,可以直接引入  
 14  
 15 //1. fs.stat  檢測是文件還是目錄  fs.statSync()同步獲取stats對象,通過返回值接收。
 16 fs.stat('html',function(error,stats){
 17     if(error){
 18         console.log(error);
 19         return false;
 20     }
 21     console.log('文件:'+stats.isFile());
 22     console.log('目錄:'+stats.isDirectory());
 23 })
 24  
 25  
 26 //2. fs.mkdir  創建目錄  
 27 fs.mkdir('css',function(error){
 28     if(error){
 29         console.log(error);
 30         return false;
 31     }
 32     console.log('創建目錄成功');
 33 })
 34  
 35  
 36 //3. fs.writeFile  寫入文件(會覆蓋之前的內容)(文件不存在就創建)  utf8參數可以省略  
 37 fs.writeFile('123.txt','你好nodejs 覆蓋','utf8',function(error){
 38     if(error){
 39         console.log(error);
 40         return false;
 41     }
 42     console.log('寫入成功');
 43 })
 44  
 45  
 46 //4. fs.appendFile 追加文件  
 47 fs.appendFile('123.txt','這是寫入的內容\n',function(error){
 48     if(error){
 49         console.log(error);
 50         return false;
 51     }
 52     console.log('寫入成功');
 53 })
 54  
 55  
 56 //5.fs.readFile 讀取文件  
 57 fs.readFile('123.txt',function(error,data){
 58     if(error){
 59         console.log(error);
 60         return false;
 61     }
 62     //console.log(data);  //data是讀取的十六進位的數據。  也可以在參數中加入編碼格式"utf8"來解決十六進位的問題;
 63     console.log(data.toString());  //讀取出所有行的信息  
 64 })
 65  
 66  
 67 //6.fs.readdir 讀取目錄下第一級內容  把目錄下麵的文件和文件夾都獲取到。  
 68 fs.readdir('html',function(error,data){
 69     if(error){
 70         console.log(error);
 71         return false;
 72     }
 73     console.log(data);  //data是數組類型,包含文件夾以及文件的名字(只有第一級目錄內容)。拿到一個文件夾下麵的所有目錄  
 74 })
 75  
 76  
 77 //7.fs.rename 重命名  1.改名  2.剪切文件(移動)  
 78 fs.rename('html/index.html','html/news.html',function(error){
 79     if(error){
 80         console.log(error);
 81         return false;
 82     }
 83     console.log('修改名字成功');
 84 })
 85  
 86  
 87 //8. fs.rmdir  刪除目錄   rmdir 這個方法只能刪除目錄,不能刪除文件  
 88 fs.rmdir('abc目錄',function(error){
 89     if(error){
 90         console.log(error);
 91         return false;
 92     }
 93     console.log('刪除目錄成功');
 94 })
 95  
 96  
 97 //9. fs.unlink刪除文件  
 98 fs.unlink('index.txt',function(error){
 99     if(error){
100         console.log(error);
101         return false;
102     }
103     console.log('刪除文件成功');
104 })
105  
106  
107 //10. fs.createReadStream  從文件流中讀取數據,讀取的文件比較大時建議用流的方式讀取,文件比較大會多次讀取。  
108 var fileReadStream = fs.createReadStream( 'data1.json');
109 var str = '';
110 fileReadStream.on('data', (data) => {
111     console.log("接收到" + data.length);   //文件比較大時,會多次讀取,多次執行該回調函數  
112 str += data;
113 })
114 fileReadStream.on('end', () => {
115     console.log(" --- 結束 ---");
116 console.log( str );
117 })
118 fileReadStream.on('error', (error) => {
119     console.log(error)
120 })
121  
122  
123 //11. fs.createWriteStream  寫入文件流  
124 var fs = require("fs");
125 var data  = "我是從資料庫獲取的數據,我要保存起來";
126 var writerStream = fs.createWriteStream('output.txt');
127 writerStream.write( data , 'UTF8' );
128 writerStream.end();  //標記文件末尾  結束寫入流,釋放資源  
129 writerStream.on( 'finish',  function() {
130     console.log("寫入完成。");
131 });
132 writerStream.on( 'error',  function(error){
133     console.log(error.stack);
134 });
135 console.log("程式執行完畢");
136  
137  
138 //12. pipe 管道流  
139 var fs = require("fs");
140 var readerStream = fs.createReadStream( 'input.txt');
141 var writerStream = fs.createWriteStream( 'output.txt');
142 readerStream.pipe( writerStream );
143 console.log("程式執行完畢");
144  
145  
146 //13. fs.access 判斷目錄、文件是否存在(讀寫許可權)
147 var  fs = require('fs');
148 fs.access('package.json',(err)=>{
149     console.log(err ?  '目錄/文件不存在': '文件存在,可以進行讀寫');
150 });
151  

作者:

鏈接:https://blog.csdn.net/houyanhua1/article/details/79443987

來源:CSDN


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Application是Android的又一大組件,在App運行過程中,有且僅有一個Application對象貫穿應用的整個生命周期,所以適合在Application中保存應用運行時的全局變數。而開展該工作的基礎,是必須獲得Application對象的唯一實例,也就是將Application單例化。 ...
  • 元素分類: 1.行級元素:內聯元素 inline 特征:內容決定元素所占位置,不可以通過CSS改變寬高 span strong em a del 2.塊級元素:block特征:獨占一行,可以通過CSS改變寬高 div p ul li ol form address 3.行級塊元素:inline-bl ...
  • 看完一整本書,結果寫不出什麼東西,按書上教程來,基本能把例子完成個七七八八,可是用padding還是margin完全整不清……,而且只要結構一複雜,元素就各種不受控制。 沒辦法 找來韓順平老師的視頻(沒錯,就是在網上不知道怎麼搞來的) 看完老師講完整個html&CSS部分2,終於把這個內容吃透了。 ...
  • Vue.js 的源碼都是在src 目錄下,其目錄結構如下。 1.compiler 目錄包含Vue.js 所有編譯相關的代碼。它包括把所有模板解析成ast 語法樹, ast 語法樹優化等功能。 2.core 目錄 包含了Vue.js 的核心代碼,包括內置組件,全局API封裝,Vue 實例化,觀察者,虛 ...
  • 上一篇博客我向大家介紹了基於ko-easyui實現的開發模板,博客地址:https://www.cnblogs.com/cqhaibin/p/9825465.html#4095185。但在還遺留三個問題。本篇幅文章就以解決這三問題展開。 一、代理 前後端分離的開發模式,一定會存在前端開發工程,與後端 ...
  • 用node搞web服務和直接用tomcat、Apache做伺服器不太一樣, 很多工作都需要自己做。緩存策略也要自己選擇,雖然有像koa-static,express.static這些東西可以用來管理靜態資源,但是為了開發或配置時更加得心應手,知其所以然,有瞭解http緩存的必要。另外,http緩存作... ...
  • JavaScript提供定時執行代碼的功能,叫做定時器(timer),主要由setTimeout()和setInterval()這兩個函數來完成。它們向任務隊列添加定時任務。初始接觸它的人都覺得好簡單,實際上真的如此麽?這裡記載下,一路對其使用姿勢變遷的歷程。 setTimeout()基礎 setT ...
  • 今天使用vue 過濾器中發現一個小坑,網上查到的大都是不正確的解決方法,故分享給大家: 原錯誤代碼: 報錯: 正確代碼: 發現啥錯沒?沒錯就是filters, 註意是有s的,沒s它也不會報語法錯誤,只會再控制台輸出 過濾器解析錯誤,所以這些小坑還是很容易踩到的。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...