Node.js--fs 文件操作


process 模塊 在使用的時候無需通過 require() 函數來加載該模塊,可以直接使用。
fs 模塊,在使用的時候,必須通過 require() 函數來加載該模塊,方可使用。
原因:process 模塊是全局的模塊,而 fs 模塊不是全局模塊。全局模塊可以直接使用,而非全局模塊需要通過 require('')  加載該模塊。
 

一、實現文件寫入操作

 1 //1.加載文件操作模塊,fs 模塊
 2 var fs = require('fs');
 3 
 4 //2.實現文件寫入操作
 5 var msg = "hello world,你好世界";
 6 
 7 //調用 fs.writeFile() 進行文件寫入 
 8 // fs.writeFile() 是異步方法
 9 // fs.writeFile('寫入文件的路徑','要寫入的數據','文檔編碼格式','回調函數')
10 fs.writeFile('hello.txt', msg, 'utf8', (err) => {
11     //如果 err===null,表示文件寫入
12     //只要 err 里面不是null,就表示寫入文件失敗了!
13     if (err) {
14         console.log('寫入文件出錯拉!具體錯誤:' + err)
15     } else {
16         console.log('ok');
17     }
18 });

二、實現文件讀取操作

 1 //1.加載文件操作模塊,fs 模塊
 2 var fs = require('fs');
 3 
 4 //2.調用 fs.readFile() 方法來讀取文件
 5 // fs.readFile('讀取文件的路徑','文件編碼格式','回調函數')
 6 //在讀取文件的時候,如果傳遞了編碼格式,那么回調函數中的 data默認就會轉換為 字符串,否則data 參數的數據是一個 Buffer 對象,里面保存的就是一個一個的字節(理解為字節數組)
 7 //把 Buffer 對象轉換為字符串,調用 toString() 方法
 8 
 9 fs.readFile('./hello.txt', 'utf8', (err, data) => {
10     if (err) {
11         throw err;
12     } else {
13         console.log(data);
14     }
15 });

 

1.讀取文件中的路徑問題

 ./  相對路徑,相對的執行 node 命令的路徑,而不是相對於正在執行的這個 js 文件來查找 hello.txt

解決在文件讀取中 ./ 相對路徑的問題
解決方法:使用  __dirname、__filename

__dirname:表示,當前正在執行的 js 文件所在的目錄
___filename:表示,當前正在執行的 js 文件的完整路徑
 
// console.log(__dirname);   C:\Users\zhuyujie\Desktop\nodejs\1.fs
// console.log(__filename);   C:\Users\zhuyujie\Desktop\nodejs\1.fs\2.fs_readFile.js

注:__dirname、___filename並不是全局的
 
應該將上面代碼的路徑修改成:
 1 var fs = require('fs');
 2 
 3 // var filename= __dirname+'\\'+'hello.txt'  (不推薦使用)
 4 
 5 //推薦使用通過 path 模塊進行路徑拼接
 6 var path = require('path');
 7 
 8 var filename = path.join(__dirname, 'hello.txt')
 9 
10 // console.log(filename);
11 
12 fs.readFile(filename, 'utf8', (err, data) => {
13     if (err) {
14         throw err;
15     }
16     console.log(data);
17 
18 });

 三、創建文件夾

1 var fs=require('fs');
2 
3 fs.mkdir('test-mkdir',(err)=>{
4 if (err) {
5     console.log('創建目錄出錯了,詳情'+err);
6 } else {
7     console.log('創建目錄成功');
8 }
9 });

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM