//文件+文件夾的操做,內置核心模塊
//引入文件
//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 );