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

/* 
 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 刪除文件 
*/
 
var fs=require('fs');   //fs是node.js的核心模塊,不用下載安裝,可以直接引入  
 
//1. fs.stat  檢測是文件還是目錄  fs.statSync()同步獲取stats對象,通過返回值接收。
fs.stat('html',function(error,stats){
    if(error){
        console.log(error);
        return false;
    }
    console.log('文件:'+stats.isFile());
    console.log('目錄:'+stats.isDirectory());
})
 
 
//2. fs.mkdir  創建目錄  
fs.mkdir('css',function(error){
    if(error){
        console.log(error);
        return false;
    }
    console.log('創建目錄成功');
})
 
 
//3. fs.writeFile  寫入文件(會覆蓋之前的內容)(文件不存在就創建)  utf8參數可以省略  
fs.writeFile('123.txt','你好nodejs 覆蓋','utf8',function(error){
    if(error){
        console.log(error);
        return false;
    }
    console.log('寫入成功');
})
 
 
//4. fs.appendFile 追加文件  
fs.appendFile('123.txt','這是寫入的內容\n',function(error){
    if(error){
        console.log(error);
        return false;
    }
    console.log('寫入成功');
})
 
 
//5.fs.readFile 讀取文件  
fs.readFile('123.txt',function(error,data){
    if(error){
        console.log(error);
        return false;
    }
    //console.log(data);  //data是讀取的十六進制的數據。  也可以在參數中加入編碼格式"utf8"來解決十六進制的問題;
    console.log(data.toString());  //讀取出所有行的信息  
})
 
 
//6.fs.readdir 讀取目錄下第一級內容  把目錄下面的文件和文件夾都獲取到。  
fs.readdir('html',function(error,data){
    if(error){
        console.log(error);
        return false;
    }
    console.log(data);  //data是數組類型,包含文件夾以及文件的名字(只有第一級目錄內容)。拿到一個文件夾下面的所有目錄  
})
 
 
//7.fs.rename 重命名  1.改名  2.剪切文件(移動)  
fs.rename('html/index.html','html/news.html',function(error){
    if(error){
        console.log(error);
        return false;
    }
    console.log('修改名字成功');
})
 
 
//8. fs.rmdir  刪除目錄   rmdir 這個方法只能刪除目錄,不能刪除文件  
fs.rmdir('abc目錄',function(error){
    if(error){
        console.log(error);
        return false;
    }
    console.log('刪除目錄成功');
})
 
 
//9. fs.unlink刪除文件  
fs.unlink('index.txt',function(error){
    if(error){
        console.log(error);
        return false;
    }
    console.log('刪除文件成功');
})
 
 
//10. fs.createReadStream  從文件流中讀取數據,讀取的文件比較大時建議用流的方式讀取,文件比較大會多次讀取。  
var fileReadStream = fs.createReadStream( 'data1.json');
var str = '';
fileReadStream.on('data', (data) => {
    console.log("接收到" + data.length);   //文件比較大時,會多次讀取,多次執行該回調函數  
str += data;
})
fileReadStream.on('end', () => {
    console.log(" --- 結束 ---");
console.log( str );
})
fileReadStream.on('error', (error) => {
    console.log(error)
})
 
 
//11. fs.createWriteStream  寫入文件流  
var fs = require("fs");
var data  = "我是從數據庫獲取的數據,我要保存起來";
var writerStream = fs.createWriteStream('output.txt');
writerStream.write( data , 'UTF8' );
writerStream.end();  //標記文件末尾  結束寫入流,釋放資源  
writerStream.on( 'finish',  function() {
    console.log("寫入完成。");
});
writerStream.on( 'error',  function(error){
    console.log(error.stack);
});
console.log("程序執行完畢");
 
 
//12. pipe 管道流  
var fs = require("fs");
var readerStream = fs.createReadStream( 'input.txt');
var writerStream = fs.createWriteStream( 'output.txt');
readerStream.pipe( writerStream );
console.log("程序執行完畢");
 
 
//13. fs.access 判斷目錄、文件是否存在(讀寫權限)
var  fs = require('fs');
fs.access('package.json',(err)=>{
    console.log(err ?  '目錄/文件不存在': '文件存在,可以進行讀寫');
});
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章