Node.js入門筆記4
- Node.js---fs 目錄操作
- 一、目錄操作
- 1.fs.mkdir():創建目錄。異步,非阻塞。
- 創建單個目錄
- 創建多個目錄
- 創建目前之前需要確認是否存在:
- 2. fs.mkdirSync():用于創建一個新的目錄。異步,非阻塞。
- 3.fs.rmdir():刪除空目錄。異步。
- 4. fs.rmdirSync():刪除空目錄。同步。
- 5. fs.rm()(Node.js 14.4+):遞歸刪除目錄及內容。
- 6. fs.readdir():獲取目錄下的文件和子目錄列表。
Node.js—fs 目錄操作
一、目錄操作
1.fs.mkdir():創建目錄。異步,非阻塞。
語法格式:
fs.mkdir(path,[options] ,callback)
參數解讀:
參數1:必選參數,字符串,表示要創建的目錄的路徑。
參數2:可選參數,表示以什么編碼格式來讀取文件。
參數3:必選參數,文件讀取完成后,通過回調函數拿到讀取的結果。
創建單個目錄
const fs = require('fs');fs.mkdir('./new-directory', (err) => {if (err) throw err;console.log('目錄創建成功');});
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】
node C:\Users\Administrator\Desktop\learning\mkdir.js
如圖:
然后電腦找到這個目錄:C:\Users\Administrator\new-directory
創建多個目錄
const fs = require('fs');// 創建多個目錄
fs.mkdir('./new-directory/new-sub-directory', { recursive: true }, (err) => {if (err) throw err;console.log('目錄創建成功');
});
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】
node C:\Users\Administrator\Desktop\learning\mkdir.js
結果:C:\Users\Administrator\new-directory
創建目前之前需要確認是否存在:
const fs = require('fs');
const path = require('path');const dir = 'myDir';if (!fs.existsSync(dir)) {fs.mkdir(dir, (err) => {if (err) throw err;console.log('目錄創建成功');});
} else {console.log('目錄已存在');
}
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】```bash
node C:\Users\Administrator\Desktop\mkdir.js
2. fs.mkdirSync():用于創建一個新的目錄。異步,非阻塞。
語法格式
fs.mkdirSync(path[, options])
參數解讀:
參數1:必選參數,需要指定一個文件路徑的字符串,表示文件的存放路徑
參數2:必選參數,表示要寫入的內容。
創建單個目錄:
const fs = require('fs');try {// 創建一個名為 'newDir' 的目錄fs.mkdirSync('newDir');console.log('目錄創建成功');
} catch (err) {if (err.code === 'EEXIST') {console.log('目錄已經存在');} else {console.error('創建目錄時出錯:', err);}
}
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】
node C:\Users\Administrator\Desktop\mkdirSync.js
結果如圖:C:\Users\Administrator\newDir
創建多個目錄:
const fs = require('fs');try {// 遞歸創建一個嵌套目錄 'parent/child/grandchild'fs.mkdirSync('parent/child/grandchild', { recursive: true });console.log('目錄遞歸創建成功');
} catch (err) {console.error('創建目錄時出錯:', err);
}
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】
node C:\Users\Administrator\Desktop\mkdirSync.js
3.fs.rmdir():刪除空目錄。異步。
語法格式:
fs.rmdir(path[, options], callback)
參數解讀:
參數1:必選參數,需要指定一個文件路徑的字符串,表示要刪除的路徑。
參數2:可選參數,默認為 false。
參數3:必選參數,回調函數。
// 1.導入fs模塊
const fs = require('fs');// 要刪除的目錄路徑
const dirPath = './test';fs.rmdir(dirPath, (err) => {if (err) {if (err.code === 'ENOENT') {console.log('目錄不存在');} else if (err.code === 'ENOTEMPTY') {console.log('目錄不為空,無法刪除');} else {console.error('刪除目錄時出錯:', err);}} else {console.log('目錄刪除成功');}
});
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】
node C:\Users\Administrator\Desktop\learning\rmdir.js
4. fs.rmdirSync():刪除空目錄。同步。
語法格式:
fs.rmdirSync(path[, options])
參數解讀:
參數1:必選參數,文件夾路徑
參數2:可選參數,options對象或編碼字符串
同步進行的就不能用回調函數觀察數據是否成功,所有用try catch來捕獲問題
const fs = require('fs');// 要刪除的目錄路徑
const dirPath = 'emptyDir';try {fs.rmdirSync(dirPath);console.log('目錄刪除成功');
} catch (err) {if (err.code === 'ENOENT') {console.log('目錄不存在');} else if (err.code === 'ENOTEMPTY') {console.log('目錄不為空,無法刪除');} else {console.error('刪除目錄時出錯:', err);}
}
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】
node C:\Users\Administrator\Desktop\rmdirSync.js
5. fs.rm()(Node.js 14.4+):遞歸刪除目錄及內容。
語法格式:
fs.rm(path, options, callback);
刪除單個文件
// 1.導入fs模塊
const fs = require('fs');
const filePath = 'example.txt';// 2.刪除文件
// 參數1: 文件路徑
// 參數2: 回調函數
fs.rm(filePath, (err) => {if (err) {console.error('刪除文件時出錯:', err);} else {console.log('文件刪除成功');}
});
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】
node C:\Users\Administrator\Desktop\learning\rm.js
遞歸刪除非空目錄:
const fs = require('fs');const dirPath = 'exampleDir';
// 參數1: 目錄路徑
// 參數2: 配置對象
// recursive: 是否遞歸刪除子目錄和文件
// force: 是否強制刪除
// 參數3: 回調函數
fs.rm(dirPath, { recursive: true, force: true }, (err) => {if (err) {console.error('刪除目錄時出錯:', err);} else {console.log('目錄及其子目錄和文件刪除成功');}
});
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】
node C:\Users\Administrator\Desktop\learning\rm.js
6. fs.readdir():獲取目錄下的文件和子目錄列表。
語法格式:
fs.open(path, flags[, mode], callback)
參數解釋:
參數1: 必選參數,文件路徑。
參數2: 必選參數,打開文件的方式讀寫
參數3: 可選參數,設置文件模式(權限),默認為 0666(可讀寫)
參數4: 必選參數,回調函數。帶有兩個參數如:callback(err, fd)
// 導入文件系統模塊
const fs = require('fs');const directoryPath = '.'; // 當前目錄// 參數1: 目錄路徑
// 參數2: 配置對象
// withFileTypes: 是否返回fs.Dirent對象
// 參數3: 回調函數
fs.readdir(directoryPath, { withFileTypes: true }, (err, files) => {if (err) {console.error('讀取目錄時出錯:', err);return;}files.forEach((file) => {if (file.isDirectory()) {console.log(`${file.name} 是一個目錄`);} else {console.log(`${file.name} 是一個文件`);}});
});
寫完代碼后,需要在terminal控制臺輸入指令:node 【 js文件的路徑】
node C:\Users\Administrator\Desktop\readdir.js