fs 文件模塊


//文件+文件夾的操做,內置核心模塊
//引入文件
//fs中的方法: 同步和異步同時出現 能用異步毫不用同步

const fs = require("fs");

/*

readFileSync      readFile 讀文件app

writeFileSync      writeFile 寫文件異步

mkdirSync         mkdir 建立目錄 (同步狀況下)函數

rmdirSync          rmdir 刪除目錄測試

unlinkSync         unlink 刪除文件ui

existsSync        exists 判斷一個目錄是否存在編碼

appendFileSync   appendFile 追加內容         // fs.writeFileSync("./3w.txt","追加的內容",{ flag:'a' });spa

readdirSync       readdir 讀取目錄下的全部文件操作系統

 

statSync           stat 查看文件信息orm

讀取文件後顯示的相關信息(粘貼了部分):對象

atime: 2017-03-03T08:43:22.838Z, 訪問時間
mtime: 2017-03-03T08:43:22.838Z, 修改時間 區別:只要改變就會變,但內容有可能不變
ctime: 2017-03-03T08:43:22.838Z, 改變時間 區別:只有內容改了纔會碧娜
birthtime: 2017-03-03T06:36:48.328Z. 建立時間

 

路徑:path

console.log(__dirname+"/test");   獲取絕對路徑

console.log( path.resolve() );     取得當前運行文件的絕對路徑

console.log( path.join( "abc", "aa" ) );    合併路徑

console.log( path.join(__dirname,"abc","bv" ) );       合併成絕對路徑

console.log ( path.extname( 'file.js') );       獲取文件的擴展名

console.log( path.sep );        當前系統使用的分隔符

 

path.basename    獲取文件名
path.extname     獲取擴展名
path.sep     操做系統提定的文件分隔符
path.delimiter  屬性值爲系統指定的環境變量路徑分隔符
path.normalize  將非標準的路徑字符串轉化爲標準路徑字符串 
path.resolve    取得絕對路徑 

*/

/*---------------------- 讀文件 ----------------------*/
//讀取文件 同步:readFileSync
//只能讀取存在的文件
//讀出來的內容是buffer類型, 而後用toSting轉換
//將內容讀取到內存中,fs.readFile 不能讀取比內存大的文件

var content = fs.readFileSync('./1r.txt');
console.log( content.toString() );

// 在讀文件的時候直接帶上編碼
var content2 = fs.readFileSync('./1r.txt',{ encoding:'utf8' });
console.log( content2 );

//讀取文件 異步:readFile 異步須要傳回調函數進去
//同步能夠使用 try catch , 異步error-first( 將回調函數的第一個參數爲錯誤參數 , 結果放到回調函數中 )
console.log(1);
fs.readFile("./1r.txt",{ encoding:'utf8' },function (err,data) {
console.log( data )
});
console.log(3);


//按照順序讀取文件
fs.stat('./test/a/',function (err,stat) {
// console.log(stat)
]);
/*
atime: 2017-03-03T08:43:22.838Z, 訪問時間
mtime: 2017-03-03T08:43:22.838Z, 修改時間 區別:只要改變就會變,但內容有可能不變
ctime: 2017-03-03T08:43:22.838Z, 改變時間 區別:只有內容改了纔會碧娜
birthtime: 2017-03-03T06:36:48.328Z. 建立時間
*/



--------------------- eg: --------------------
//讀取2個文件放到 school 裏
console.log( "測試:" );
var school = { };
fs.readFile('./1r.txt','utf8',function (err,data) {
console.log( data);
school.name = data;
out();
});
fs.readFile('./2w.txt','utf8',function (err,data) {
console.log( data);
school.age = data;
out();
});
function out() {
if( Object.keys(school).length == 2 ){
console.log( school )
}
}

console.log( school );
console.log( "測試end:" );



/*---------------------- 寫文件 ------------------------*/

fs.writeFileSync('./2w.txt',"同步寫入的內容",{ encoding:"utf-8"});

fs.writeFile('./3w.txt',"異步異步",{ encoding:"utf-8"},function (err,data) {
// 回調函數特色:第一個數永遠是error對象
console.log(err)
});

/*---------------------- 建立目錄 -----------------------*/
//建立目錄
fs.mkdirSync('test');
//刪除目錄
// fs.rmdirSync("test")

// 多重目錄一塊兒建立
makep( 'parent/child/child2/child3' );
function makep( path ) {
var num = path.split('/');
//console.log(num);
num.forEach(function (item , index) {
var arr = num.slice(0,index+1).join('/');
console.log(arr);
//判斷文件是否存在
var flag = fs.existsSync(arr);
if(!flag){
fs.mkdirSync( arr );
}

});
}

//若是是異步的話,最後一個參數必定是回調函數
fs.mkdir('./test/a',function (err) {
console.log(err)
});


//讀取目錄
fs.readdir('./test/a',function (err,files) {
console.log(files); //讀取指定目錄下的全部文件 子目錄 子文件的名字
//迭代輸出
files.forEach(function (file) {
fs.readFile('./test/a/'+file,function (err,data) {
console.log( data.toString() )
})
});
});

//判斷一個文件是否存在
fs.exists('./test',function (exists) {
console.log( exists )
});



/*----------------------------------- path ---------------------------------*/
/* 路徑處理 */
var path = require("path");

// 合併路徑
// join 自動幫加分隔符,在哪一個系統下,加哪一類的分隔符
console.log(__dirname+"/test");

// 不須要考慮格式是 \ 仍是 /
console.log( path.join( "parent", "child" , "a" , "b") );
console.log( path.join(__dirname, "a", "b" , "c") );

// 取得絕對路徑
// 取得當前文件運行的絕對路徑
console.log( path.resolve() )
 
// 擴展名console.log ( path.extname( 'file.js') );//當前系統使用的分隔符console.log( path.sep );
相關文章
相關標籤/搜索