fs는 파일시스템, 파일 읽기 열기 쓰기 수정 등 파일과 관련된 라이브러리
path는 경로와 관련된 라이브러리.
예를 들어
path.join(__dirname, "파일명")
하면 그걸 경로 string으로 만들어 줌. 보통 경로표시 하려고 하면 그냥 문자열로 하려고 하면 이스케이프문자라서 좀 신경좀 써야 함. 그냥 path이용하는게 편하긴 함. 물론 못할 건 아님.
__dirname은 그냥 자바스크립트 자체에서 지원하는 현재경로 인거 같음.
여튼 저 FILE_PATH처럼 인자 여러개로 받을 수 있음.
fs 여러개 있음.
fs.open() : 파일 열기. 메모리 상 여는거임.
fs.readFile() : 파일 읽기. 파일 내용을 직접적으로 읽는거임.
fs.writeFile() : 파일 쓰기. 파일 만들기.
fs.mkdir() : 디렉토리 만들기.
fs.appendFile() : 기존 파일에 추가하기
fs.access() : 파일 접근. 접근할 수 있는지 확인하는데 쓸 듯.
fs.unlink() : 파일 삭제할 때 씀.
fs.rename() : 파일 이름 변경.
fs.copyFile() : 파일을 복사해서 지정한 경로에 넣음.
fs.stat() : 파일 또는 폴더의 상태.. 뭐 데이터나 만들어진 날짜 등 볼 수 있음. 파일인지 폴더인지 등도
fs는 저 패턴으로 씀
fs.메소드(경로, 옵션, 콜백(에러, 데이터))
이런 모양새인데 메소드마다 조금 씩 다름.
저 콜백에 파일 읽기 완료 시와 에러 발생 시 처리할 로직을 씀.
그리고, Sync라고 붙어 있는게 있는데, 이건 return값을 주는 거 인듯.
예를 들어 readFileSync()는 return이 됨.
일단 직역으로는 동기, 라는 걸로 동기적으로 처리해주는 거임.
하긴 동기적으로 처리해야 연속적으로 계산하는 순간에 데이터를 줘도 문제가 없지.
대충 다 짜본거. 되긴 됨.
아 근데 이거 너무 콜백지옥임.
대충
fs.mkdir(폴더경로, 콜백(에러))
파일경로에, 그러니까 경로로 폴더가 생성됨. 상위경로/폴더이름 까지 경로에 있어야 저 폴더이름 폴더가 생성되는 거.
fs.writeFile(파일경로, 데이터, 옵션, 콜백(에러))
옵션은 "utf-8" 썼는데, 어떤 문서에 대한 옵션이려나?
여튼 이것도 파일경로라고 했으니 상위경로/파일명 까지 있어야 하고,
그 안에 데이터가 써지는 거임.
옵션은 "utf-8" 줬음.
fs.open(경로, 콜백(에러, 파일설명자))
그냥 경로의 파일을 여는거다.
파일설명자라는게 파일을 열 때, 정수값이 반환되는데,
첫번째 열린파일은 3, 두번째는 4, ... 이런다는데,
0은 표준입력,
1은 표준출력,
2는 표준오류 이런다는데..
그러니까 보통 3,4,5... 이런 게 정상이라는 건가?
아직 이걸 쓸 이유는 잘 모르겠다.
여튼
fs.open은 주로
파일의 상태를 확인하려 할 경우
파일에 대한 고급작업, fs.ftruncate, fs.fchown, fs.chmod 등 하려고 할 경우(권한 주는 그런 것 들 인듯.)
여튼 권한과 관련된 작업이나 파일 상태를 알려고 하거나 그러려고 하는 거 인듯.
보통 readFile같은 거에 오픈-> 읽기 다 되서 잘 쓸지는 모르겠음.
fs.readFile(파일경로, 옵션, 콜백(에러, 데이터))
파일경로의 파일을 옵션으로 읽음.
마찬가지로 콜백에 파일을 제대로 로드 했을때나 에러 발생시에 할 로직 작성
fs.appendFile(파일경로, 데이터, 옵션, 콜백(에러))
파일경로의 파일에 데이터를 추가함.
옵션은 utf-8 이런 거 인듯.
fs.access(파일경로, 옵션, 콜백(에러))
파일에 접근해 보는 거.
사실 접근해 본다는 게 어떤 건지는 잘 모르겠으나, 아마 접근할 수 있는지, 그러니까 파일이 있는지 없는지?
그런 거 확인할 때 쓸 수 있을 듯?
옵션으로 fs.constants.F_OK를 줬는데,
직역으로 fs의 상수의 F_OK
F_OK : 파일 존재여부
R_OK : 읽기 권한 여부
W_OK : 쓰기 권한 여부
참고로 간간히 볼 수 있는 ENOENT는 파일/폴더가 없을 때 나오는 에러코드임.
fs.copyFile(복사할파일, 복사될경로, 콜백(err))
복사할파일 복사한 다음 복사될 경로에 붙여넣기.
fs.stat(파일경로, 콜백(에러, 상태))
파일이나 폴더의 상태를 알아보는 건데, 파일인지 폴더인지도 알 수 있다.
상태가 객체라, 예를 들어 상태.isDirectory() 이런 메소드도 있다. 여러 상태를 알 수 있다.
파일 생성시간.. 크기 등등등
여튼, 행동은 파일(혹은 폴더를)을 ~~ 한다.
인데, 파일을 ~~ 했을 때 (로드했거나 저장했거나 추가했거나 등)
할 행동을 콜백함수에 넣으면 됨.
엄청나게 많다.
참고로 이거,
require("fs").promises
하면 동기 비동기 처리 가능한 프로미스 반환하는 걸로 가져온다.
async await 처리 가능하다.
이게 더 편할 듯 싶다.
보통 fs는 콜백지옥이 발생할 수 있다.
파일 관련된 것은 아무래도 외부에서 읽어오는 거니 시간이 어찌 걸릴 지 몰라 기본이 비동기 처리하도록 되어 있어서,
프로미스는 그걸 동기적으로 해결하기 위해 하는 것.
'프론트엔드-코드 > Node.js' 카테고리의 다른 글
express (0) | 2023.10.30 |
---|---|
서버 띄우기 2 url마다 다르게 받기 (0) | 2023.10.12 |
프로젝트 폴더에 파일 생성 -미완 (0) | 2023.10.06 |
프로젝트 폴더에 폴더 생성 (0) | 2023.10.06 |
서버 띄우기 (0) | 2023.10.05 |