nodejs檔案操作,流和管道
阿新 • • 發佈:2019-02-11
/*
* 檔案系統模組fs模組,對檔案進行操作,讀檔案,寫檔案,刪除檔案等
//讀檔案
在node.js中為讀取檔案提供了兩種方式:直接讀取()和流讀取(方便網路通訊)
直接讀取有同步和非同步兩種
//非同步讀取
程式從上往下執行,當遇到非同步語句時,同步的程式碼繼續向後執行,非同步單獨開一個任務程序,
在主程序裡面分出一個任務程序,任務程序在讀取檔案完成後再通知主程序,呼叫回撥函式中的函式
var fs = require("fs");
fs.readFile('input.txt', function(err, data){
if(err){
console.error(err);
}
console.log("非同步讀取:"+data.toString());
});
...//主程序從這裡繼續執行
//同步讀取
程式從上往下執行,在執行下一句時,前面一句必須已經執行完
就是按照程式碼順序執行,會比較耗時吧,如果讀取檔案所花時間較長的話
var fs= require("fs");
var data=fs.readFileSync('input.txt');
console.log("同步讀取:"+data.toString());
//寫檔案
同樣也有同步和非同步兩種方式
fs.writeFile();3個引數,檔名,資料,回撥函式
fs.writeFileSync();
//刪除檔案
fs.link();兩個引數,一個為檔名,一個回撥函式;
*/
/*
* 資料在網路上傳輸都是使用的位元組碼;
流是一組有序的,有起點,有終點的位元組資料的傳輸方式。
//讀取檔案流
var fs = require('fs');
var data = "";
var readerStream = fs.createReadStream("xx.txt");//建立可讀流;架管道
readerStream.on('data',function(chunk){ //來監聽data事件,有資料讀出時就會觸發
data+=chunk;
});
readerStream.on('end', dunction(){ //監聽end事件,當檔案讀取完畢時,就會觸發
console.log(data);
})
readerStream.on('error', dunction(){ //監聽error事件,當檔案讀取出錯時,就會觸發
console.log(data);
})
console.log("程式執行完畢");
//寫入檔案流
var fs = require('fs');
var data = "";
var str = fs.createWriteStream("xx.txt");//建立可寫流;架管道
//向str寫入內容
str.write('隨便寫點。。');
//寫完以後要結束,如果不結束,它將一直等待;
str.end();
//繫結一個finish事件
str.on('finish',function(){
console.log('寫入成功');
})
//也有error事件等
*/
/*
*管道提供了一個輸出流到輸入流的機制,將兩邊對接,流入流出,可以實現大檔案的複製等,非常方便。
var fs = require("fs");
//建立一個可讀流
var readerStream = fs.createReadStream("input.txt");
//建立一個可寫流
var writerStream = fs.creatWriteStream("output.txt");
//複製,從輸出流入到輸入裡面
readerStream.pipe(writerStream);
*/
* 檔案系統模組fs模組,對檔案進行操作,讀檔案,寫檔案,刪除檔案等
//讀檔案
在node.js中為讀取檔案提供了兩種方式:直接讀取()和流讀取(方便網路通訊)
直接讀取有同步和非同步兩種
//非同步讀取
程式從上往下執行,當遇到非同步語句時,同步的程式碼繼續向後執行,非同步單獨開一個任務程序,
在主程序裡面分出一個任務程序,任務程序在讀取檔案完成後再通知主程序,呼叫回撥函式中的函式
var fs = require("fs");
fs.readFile('input.txt', function(err, data){
if(err){
console.error(err);
}
console.log("非同步讀取:"+data.toString());
});
...//主程序從這裡繼續執行
//同步讀取
程式從上往下執行,在執行下一句時,前面一句必須已經執行完
就是按照程式碼順序執行,會比較耗時吧,如果讀取檔案所花時間較長的話
var fs= require("fs");
var data=fs.readFileSync('input.txt');
console.log("同步讀取:"+data.toString());
//寫檔案
同樣也有同步和非同步兩種方式
fs.writeFile();3個引數,檔名,資料,回撥函式
fs.writeFileSync();
//刪除檔案
fs.link();兩個引數,一個為檔名,一個回撥函式;
*/
/*
* 資料在網路上傳輸都是使用的位元組碼;
流是一組有序的,有起點,有終點的位元組資料的傳輸方式。
//讀取檔案流
var fs = require('fs');
var data = "";
var readerStream = fs.createReadStream("xx.txt");//建立可讀流;架管道
readerStream.on('data',function(chunk){ //來監聽data事件,有資料讀出時就會觸發
data+=chunk;
});
readerStream.on('end', dunction(){ //監聽end事件,當檔案讀取完畢時,就會觸發
console.log(data);
})
readerStream.on('error', dunction(){ //監聽error事件,當檔案讀取出錯時,就會觸發
console.log(data);
})
console.log("程式執行完畢");
//寫入檔案流
var fs = require('fs');
var data = "";
var str = fs.createWriteStream("xx.txt");//建立可寫流;架管道
//向str寫入內容
str.write('隨便寫點。。');
//寫完以後要結束,如果不結束,它將一直等待;
str.end();
//繫結一個finish事件
str.on('finish',function(){
console.log('寫入成功');
})
//也有error事件等
*/
/*
*管道提供了一個輸出流到輸入流的機制,將兩邊對接,流入流出,可以實現大檔案的複製等,非常方便。
var fs = require("fs");
//建立一個可讀流
var readerStream = fs.createReadStream("input.txt");
//建立一個可寫流
var writerStream = fs.creatWriteStream("output.txt");
//複製,從輸出流入到輸入裡面
readerStream.pipe(writerStream);
*/