第三方包
創建多級文件夾 mkdirp npm包可以創建多級文件夾
node自帶
1. fs.stat 檢測是文件還是目錄
2. fs.mkdir 創建目錄
3. fs.writeFile 創建寫入文件
4. fs.appendFile 追加文件
5.fs.readFile 讀取文件
6.fs.readdir 讀取目錄
7.fs.rename 重命名
8. fs.rmdir 刪除目錄
9. fs.unlink 刪除文件
10. fs.createReadStream 從文件流中讀取數據
11. fs.createWriteStream 寫入文件
12. 管道流
let fs = require('fs');
// 檢測是文件還是目錄
// 名字 回調函數
// fs.stat('./package.json', (err, data) => {
// if (err) { console.log(err);return;}
// console.log(`是文件:${data.isFile()}`);
// console.log(`是目錄:${data.isDirectory()}`);
// })
// 創建目錄
// 路徑 權限(可以默認777 不填寫) 回調函數
// fs.mkdir('./package', (err) => {
// if (err) {console.log(err);return;}
// console.log(`創建成功`);
// })
// 讀取目錄
// 路徑 回調函數
// fs.readdir('./css', (err, data) => {
// if (err) {console.log(err);return;}
// console.log(data);
// })
// 寫入文件 如果文件存在 會執行替換
// 路徑 內容 回調函數
// fs.writeFile('./css/index3.css', '', (err) => {
// if (err) {console.log(err);return;}
// console.log(`寫入成功`);
// })
// 讀取文件
// 路徑 回調函數
// fs.readFile('./css/index2.css', (err, data) => {
// if (err) {console.log(err);return;}
// console.log(data.toString());
// })
// 文件追加內容 如果文件存在會執行替換 如果不存在會創建文件
// 路徑 內容 回調函數
// fs.appendFile('./css/index2.css', 'body{color:red;}\nh1{font-weight:600;}', (err) => {
// if (err) {console.log(err);return;}
// console.log(`追加成功`);
// })
// 重命名文件 或者 文件夾
// 路徑 回調函數
// fs.rename('./css/index3.css', './css/index.css',(err) => {
// if (err) {console.log(err);return;}
// console.log(`重命名成功`);
// })
// 移動文件 或者 文件夾 可以一起重命名
// 路徑 回調函數
// fs.rename('./css/index.css', './servers/index.css',(err) => {
// if (err) {console.log(err);return;}
// console.log(`移動成功`);
// })
// 刪除文件
// 路徑 回調函數
// fs.unlink('./css/index.css', (err) => {
// if (err) {console.log(err);return;}
// console.log(`刪除文件成功`);
// })
// 刪除文件夾 要先清空文件夾下的文件
// 路徑 回調函數
// fs.rmdir('./css', (err) => {
// if (err) {console.log(err);return;}
// console.log(`刪除文件夾成功`);
// })
// 刪除文件夾 for循環刪除文件 在刪除文件夾
// 路徑 回調函數
// fs.readdir('./css', (err, data) => {
// if (err) {console.log(err);return;}
// for (let i = 0; i < data.length; i++) {
// fs.unlink(`./css/${data[i]}`, (err) => {
// if (err) {console.log(err);return;}
// console.log(`刪除文件成功`);
// })
// }
// fs.rmdir('./css', (err) => {
// if (err) {console.log(err);return;}
// console.log(`刪除文件夾成功`);
// })
// console.log(data);
// })
// fs.createReadStream 從文件流中讀取數據
// let fileReadStream = fs.createReadStream('data.json')
// let count=0;
// let str='';
// fileReadStream.on('data', (chunk) => {
// console.log(`${++count} 接收到:${chunk.length}`);
// str += chunk
// });
// fileReadStream.on('end', () => {
// console.log('--- 結束 ---');
// console.log(count);
// console.log(str);
// });
// fileReadStream.on('error', (error) => {
// console.log(error)
// });
// fs.createWriteStream 寫入文件
// let data = '我是從數據庫獲取的數據,我要保存起來'; // 創建一個可以寫入的流,寫入到文件 output.txt 中
// let writerStream = fs.createWriteStream('output.txt'); // 使用 utf8 編碼寫入數據
// writerStream.write(data,'UTF8'); // 標記文件末尾
// writerStream.end(); // 處理流事件 --> finish 事件
// writerStream.on('finish', () => { /*finish - 所有數據已被寫入到底層系統時觸發。*/
// console.log('寫入完成');
// })
// writerStream.on('error', function(err) {
// console.log(err.stack);
// });
// console.log('程序執行完畢');
// 管道流
// 創建一個可讀流
// 管道提供了一個輸出流到輸入流的機制。通常我們用於從一個流中獲取數據並將數據傳 遞到另外一個流中。
// 如上面的圖片所示,我們把文件比作裝水的桶,而水就是文件里的內容,我們用一根管子(pipe)連接兩個桶使得水從一個 桶流入另一個桶,這樣就慢慢的實現了大文件的復制過程。
// 我們通過讀取一個文件內容並將內容寫入到另外一個文件中。
// let readerStream = fs.createReadStream('input.txt'); // 創建一個可寫流
// let writerStream = fs.createWriteStream('output.txt'); // 管道讀寫操作
// // 讀取 input.txt 文件內容,並將內容寫入到 output.txt 文件中
// readerStream.pipe(writerStream);
// console.log("程序執行完畢");