-
util 모듈 && fs 모듈웹프로그래밍/node.js 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이벤트가 발생합니다.
스트림은 데이터가 버퍼에 채워지면 보내기를 반복한다.
버퍼들의 흐름을 스트림이라고한다.
'웹프로그래밍 > node.js' 카테고리의 다른 글
예외처리 (0) 2019.08.08 events모듈 (0) 2019.08.08 path모듈 && url모듈 && crypto모듈 (0) 2019.08.07 데이터베이스 (0) 2019.06.04 사용자 수정 API 성공, 실패시 (0) 2019.06.03 댓글