웹 브라우저에서는 쓸 수 없는 모듈(프로그램 코드가 임의로 나의 파일에 접근하는 것이 차단되어 있음)
path 모듈
경로를 다루는 주요 함수
const path = require('path모듈명');path.join(경로1, 경로2, ...) 가변 매개변수(개수에 제한이 없다)const path = require('path');
// 경로 연결하기
const fullpath = path.join('some', 'work', 'ex.txt');
console.log(fullPath); // some\work\ex.txt
// 동기
경로만 추출하기 - dirname 함수
path.dirname(경로)파일 이름 추출하기 - basename 함수
path.basename(경로) 경로를 제외한 파일명만 리턴path.basename(경로, 확장자) 지정한 확장자를 제외한 파일명 리턴확장자 추출하기 - extname 함수
path.extname(경로)경로를 객체로 변환하기 - parse 함수
path.parse(경로){
root, // 루트 디렉토리
dir, // 디렉토리 경로
base, // 파일명, 확장명
ext, // 확장명
name // (확장명을 제외한) 파일명
} // 결과값으로 객체가 리턴된다
// 원하는 값만 불러올 수 있음, 객체로 전체 다 불러오기도 가능
const { name, ext } = path.parse(__filename);
console.log({ name, ext });
//{ name: 'path', ext: '.js' }
const fs = require('fs');
fs.함수명
fs.readFile('example.txt', (err, data) => {...});
현재 디렉토리 읽기
함수(파일명) 뒤에 Sync가 붙으면 동기함수, 안 붙으면 비동기 함수 - default 비동기
동기 처리로 디렉터리 읽기 - readdirSync 함수
fs.readdirSync(경로 [, 옵션])비동기 처리로 디렉터리 읽기 - readdir 함수
fs.readdir(경로[, 옵션], 콜백)자바스크립트에서 false로 해석되는 값
파일 읽기
동기 처리로 파일 읽기 - readFileSync 함수
fs.readFileSync(경로 [,옵션])비동기 처리로 파일 읽기 - readFile 함수
fs.readFile(파일 [, 옵션], 콜백)https://nodejs.org/docs/latest/api/fs.html
✅ 공식 문서 활용해서 매개변수, 예제 등 보기
파일에 기록하기
fs.writeFileSync(파일, 내용 [, 옵션])fs.existsSync(파일)fs.writeFile(파일, 내용[, 옵션], 콜백)파일 삭제하기
fs.unlinkSync(파일)fs.unlink(파일, 콜백)fs.mkdirSync(경로 [,옵션])fs.mkdir(경로 [, 옵션], 콜백)fs.rmdirSync(경로 [, 옵션])fs.rmdir(경로 [, 옵션], 콜백)fs.rmSync(경로 [, 옵션])fs.rm(경로[, 옵션], 콜백)버퍼
스트림
리더블 스트림(readable stream)
createReadStream 함수로 생성.on('이벤트', 콜백)라이터블 스트림(writable stream)
2개의 스트림을 연결하는 파이프 - pipe
data 이벤트가 발생했을 때 따로 가져오기 기록하던 것을 한꺼번에 처리
이벤트 처리를 하지 않아도 됨
fs.readStream.on('data', (chunk) => {
fs.writeStream.write(chunk)
});
// pipe 함수 사용
fs.readStream.pipe(writeStream);
동기 처리란
비동기 처리
블로킹 I/O, blocking I/O
논블로킹 I/O, non-blocking I/O
콜 스택(call stack)
이벤트 루프로 비동기 처리하기