참고 : 아래 항목들의 경우 모두 비동기로 동작한다.
하지만 promise를 반환하지는 않으므로, 이후 관련 작업을 이어서 해야할 경우 아래와 같이 사용하면된다.
먼저 file system 모듈을 import
const fs = require('fs);
먼저 nodejs의 내장 파일시스템을 불러온다.
fileSystem, 예제에서는 fs변수에 담았다.
fs에는 여러가지 메소드가 있는데, 오늘은 그중에 읽기, 쓰기, 이어쓰기 정도를 다룬다.
네이밍은 직관?적이다. 읽다.파일 쓰다.파일 추가.파일 이런식이다.
아래의 설명은 접근하기 쉽게만 작성했다.
따라서 각 메소드의 옵션들은 다루지 않는다.
먼저 기본적인 기능을 몇번 사용해보고, 아래문서를 참조해서 디테일도 챙기면 좋겠다.
https://nodejs.org/dist/latest-v17.x/docs/api/fs.html#fsreadfd-options-callback
폴더 읽기 fs.readdir
fs.readdir("./", (err, files) => {
if (err) throw err;
files.forEach((item) => {
console.log(item);
});
console.log("readdir");
});
폴더를 읽는다.
폴더를 읽는다 하는 것은 폴더 내의 파일들을 뜻하는것과 같다.
위 예제에서는 파일들(files)을 순회하며 로그를 찍는다.
첫번째 인자는 경로를 나타낸다. 지금은 자바스크립트 파일이 위치한 폴더를 가르킨다.
두번째 인자는 콜백함수다.
- 콜백함수의 첫번째 인자는 error다. 위 예제에서는 error발생시 에러처리한다.
- 콜백함수의 두번째 인자는 files다. 폴더 내부의 파일들을 뜻한다. 배열이다.
폴더 생성 fs.mkdir
fs.mkdir("aaa", (err) => {
if (err) throw err;
});
폴더를 생성한다. 위 예제는 "aaa"라는 폴더를 생성하는 예제다. 현제 디렉토리(자바스크립트가 위치한 폴더 기준이 된다.
"./aaa"와 동일하게 동작한다. 다만 이미 있는 폴더명이나, 뎁스구조일 경우 ("./aaa/aaa/aaa") 에러가 발생하니 주의할것.
다시 정리하면
- 기존의 폴더 기준으로 없던 폴더를 만드는 것은 동작.
- 기존의 폴더를 기준으로 하위 존재하던 폴더 내부에 없던 폴더를 만드는 것은 동작.
- 빈 폴더에서 ./aaa/aaa/aaa 의 뎁스 구조로는 동작하지 않음. 에러.
- 이미 존재하는 폴더일 경우 에러
첫번째 인자는 폴더명,폴더구조/폴더명의 형식을 받는다. 둘중 어떤 방식이든 동작한다. 뎁스가 깊어져도 괜찮다.
두번째 인자는 콜백함수를 받는다. 위의 예제에서는 에러처리에 대한부분만 작성했다.
댓글