nodeJS 에서 파일 을 읽 고 쓰 는 방법의 차 이 를 자세히 설명 합 니 다.
1.readFile 과 writeFile
1.readFile 방법 은 읽 을 파일 내용 을 캐 시 영역 에 완전히 읽 고 이 캐 시 영역 에서 파일 내용 을 읽 는 것 입 니 다.구체 적 인 작업 은 다음 과 같 습 니 다.
fs.readFile('./test.txt', 'utf8', function(err, data){
console.log(data);
});
이에 대응 하 는 동기 화 방법 은:
var data = fs.readFileSync('./test.txt', 'utf8');
console.log(data);
동기 화 방법 과 비동기 방법의 차 이 는 동기 화 방법 으로 실 행 된 작업 이 끝 날 때 까지 후속 코드 의 실행 을 수행 할 수 없다 는 것 이다.한편,비동기 방법 은 조작 결 과 를 리 셋 함수 의 매개 변수 로 되 돌려 줍 니 다.방법 이 호출 된 후에 후속 코드 를 즉시 실행 할 수 있 고 읽 은 후에 대응 하 는 리 셋 함 수 를 호출 할 수 있 습 니 다.2.writeFile 방법 은 기록 할 파일 의 내용 을 캐 시 영역 에 완전 하 게 읽 은 다음 에 캐 시 영역 에 있 는 내용 을 모두 파일 에 한꺼번에 기록 하 는 것 입 니 다.동기 화 와 비동기 화 는 다음 과 같 습 니 다.
//
fs.writeFile('./message.txt', ' ',function(err){
if(err) console.log(' ');
else console.log(' ');
});
//
fs.writeFileSync('./message.txt',' ');
이상 의 읽 기와 쓰기 동작 은 Node.js 는 파일 내용 을 하나의 전체 로 보고 캐 시 구역 을 분배 하고 파일 내용 을 캐 시 구역 에 한꺼번에 읽 습 니 다.이 기간 에 Node.js 는 다른 처 리 를 수행 할 수 없습니다.따라서 큰 파일 을 읽 고 쓸 때 캐 시 영역 이 폭발 할 수 있 습 니 다.2.read 와 write
1.read 또는 readSync 방법 으로 파일 내용 을 읽 는 것 은 파일 의 작은 내용 을 캐 시 구역 에 계속 읽 는 것 입 니 다.마지막 으로 이 캐 시 구역 에서 파일 내용 을 읽 습 니 다.구체 적 인 작업 은 다음 과 같 습 니 다.
var fs = require('fs');
fs.open('./message.txt','r',function(err,fd){
var buf = new Buffer(225);
// fd buf
fs.read(fd,buf,0,9,3,function(err,bytesRead,buffer){
console.log(buf.slice(0,bytesRead).toString());
});
var buff = new Buffer(225);
// null
fs.read(fd,buff,0,3,null,function(err,bytesRead,buffer){
console.log(buff.slice(0,bytesRead).toString());
});
var buffer = new Buffer(225);
//
var bytesRead = fs.readFileSync(fd,buffer,0,9,3);
console.log(bytesRead);
console.log(buffer.slice(0,bytesRead).toString());
});
2.write 또는 writeSync 방법 으로 내용 을 기록 할 때 node.js 는 다음 과 같은 과정 을 수행 합 니 다.1.기록 해 야 할 데 이 터 를 메모리 캐 시 에 기록 합 니 다.2.캐 시 구역 이 가득 찬 후에 캐 시 구역 의 내용 을 파일 에 기록 합 니 다.3 반복 실행 절차 1 과 절차 2,데이터 가 모두 파일 에 기 록 될 때 까지.구체 적 인 조작 은 다음 과 같다.
var fs = require('fs');
var buf = new Buffer(' ');
fs.open('./mess.txt','w',function(err,fd){
fs.write(fd,buf,3,9,0,function(err,written,buffer){
fs.write(fd,buf,12,3,null,function(err,written,buffer){
if(err) console.log(' ');
console.log(' ');
});
});
//
fs.writeSync(fd,buf,3,9,0);
});
이상 의 읽 기와 쓰기 동작 은 node.js 에서 파일 을 하나씩 나 누 어 점차적으로 조작 하고 파일 을 읽 고 쓰 는 과정 에서 다른 작업 을 수행 할 수 있 습 니 다.그러나 어떤 때 는 전체 파일 의 내용 에 관심 이 없고 파일 에서 읽 은 일부 데이터 와 데 이 터 를 읽 을 때 실행 해 야 할 처리 에 만 관심 이 있 을 때 파일 흐름 으로 처리 할 수 있 습 니 다.
3.createReadStream 과 createWrite Stream
1.createReadStream 방법 은 파일 내용 을 스 트림 데이터 로 읽 는 ReadStream 대상 을 만 듭 니 다.방법 은 다음 과 같 습 니 다.
var fs = require('fs');
var readStream = fs.createReadStream('./message.txt',{start:3,end:12});
readStream.on('open',function(fd){
console.log(' ');
});
readStream.on('data',function(data){
console.log(' :');
console.log(data);
});
readStream.on('end',function(){
console.log(' ');
});
readStream.on('close',function(){
console.log(' ');
});
readStream.on('error',function(err){
console.log(' ');
});
2.createWriteStream 방법 은 스 트림 데 이 터 를 파일 에 기록 하 는 WriteStream 대상 을 만 듭 니 다.방법 은 다음 과 같 습 니 다.
var fs = require('fs');
var file = fs.createReadStream('./message.txt');
var out = fs.createWriteStream('./anotherMessage.txt');
file.on('data',function(data){
out.write(data);
});
out.on('open',function(fd){
console.log(' ');
});
file.on('end',function(){
//
out.end(' ',function(){
console.log(' ');
console.log(' '+out.bytesWritten+' ');
});
});
이상 의 방법 은 파일 을 읽 고 쓰 는 과정 에서 감청 할 수 있 으 며,관련 방법 pause 와 resume 이 파일 의 읽 기 동작 을 일시 정지 하거나 복원 할 수 있 습 니 다.기록 할 때 캐 시 영역 데이터 가 가득 찼 거나 모두 출력 되 었 는 지 감청 할 수 있 습 니 다.다음 과 같 습 니 다.
// writeStream drain
var fs = require('fs');
var out = fs.createWriteStream('./test1.txt');
for(var i=0;i<10000;i++){
// true false true
var flag = out.write(i.toString());
console.log(flag);
}
out.on('drain',function(){
console.log(' ');
var out = fs.createWriteStream('./test2.txt');
for(var i=0;i<10;i++){
var flag = out.write(i.toString());
console.log(flag);
}
out.on('drain',function(){
console.log(' ');
});
});
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Express.js에서 오류를 처리하는 간단한 방법Express에서 오류를 처리하는 여러 가지 방법이 있습니다. 이를 수행하는 일반적인 방법은 기본 익스프레스 미들웨어를 사용하는 것입니다. 또 다른 방법은 컨트롤러 내부의 오류를 처리하는 것입니다. 이러한 처리 방식...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.