웹프로그래밍/node.js
util 모듈 && fs 모듈
hyun_jo_o
2019. 8. 7. 23:05
util 모듈
util.deprecate는 지원이 조만간 중단될 메서드임을 알려줄 때 사용한다.
const util = require('util');
const crypto = require('crypto');
//deprecated는 지원이 조만간 중단될 메서드임을 알려줄 때 사용
const dontuseme = util.deprecate((x,y)=>{
console.log(x+y);
});
dontuseme(1, 2);
함수를 사용하면 콘솔에 값은 나오지만 경고도 함께 출력 된다.
util.promisify로 promise를 지원하지 않는 (err, data) => {} 꼴의 콜백 또한 프로미스로 만들 수 있다.
const randomBytesPromise = util.promisify(crypto.randomBytes);
const pbkdf2Promise = util.promisify(crypto.pbkdf2);
crypto.randomBytes(64, (err, buf) => {
const salt = buf.toString('base64');
console.log('salt', salt);
console.time('암호화');
crypto.pbkdf2('현주바보', salt, 651395, 64, 'sha512', (err, key) => {
console.log('password', key.toString('base64'));
console.timeEnd('암호화');
});
});
//promise를 지원하지 않는 (err, data) => {} 꼴의 콜백은
//util.promisify로 프로미스로 만들 수 있다.
randomBytesPromise(64)
.then((buf) => {
const salt = buf.toString('base64');
return pbkdf2Promise('현주바보', salt, 651395, 64, 'sha512');
})
.then((key) => {
console.log('password', key.toString('base64'));
})
.catch((err) => {
console.error(err);
});
(async()=> {
const buf = await randomBytesPromise(64);
const salt = buf.toString('base64');
const key = await pbkdf2Promise('현주바보', salt, 651395, 64, 'sha512');
console.log('password', key.toString('base64'));
})();
fs 모듈
파일 읽기
const fs = require('fs');
//fs가 프로미스를 10버전에서 지원 그래서 콜백으로
fs.readFile('./readme.txt', (err, data) => {
if(err) {
throw err;
}
console.log(data);
console.log(data.toString());
});
파일 쓰기
const fs = require('fs');
fs.writeFile('./writeme.txt', '글을 써주세요', (err) => {
if(err) {
throw err;
}
fs.readFile('./writeme.txt', (err, data) => {
console.log(data.toString());
})
});
파일스트림으로 읽어오기 (버퍼링)
const fs = require('fs');
const readStream = fs.createReadStream('./readme3.txt', {highWaterMark: 16});
const data = [];
readStream.on('data', (chunck) => {
data.push(chunck);
console.log('data', chunck, chunck.length);
});
readStream.on('end', () => {
console.log('end', Buffer.concat(data).toString());
});
readStream.on('error', (err) => {
console.log('error', err);
})
// 스트림은 이벤트 기반으로 동작합니다. data,end,error...
// 버퍼(청크)들이 들어올 때 마다 data이벤트가 발생합니다.
스트림은 데이터가 버퍼에 채워지면 보내기를 반복한다.
버퍼들의 흐름을 스트림이라고한다.