사전 준비
fs : 파일 입출력을 할때 사용하는 NodeJs 내장모듈
path : 폴더와 파일의 경로를 임의로 지정해주는 라이브러리
const fs = require('fs')
const path = require('path')
현재 위치 알기
현재 실행하는 파일이 있는 위치를 절대경로로 알려준다
console.log(__dirname)
// >> /Users/hancoco/workspace/git/final/file_upload/back
디렉토리 생성
// 비동기로 디렉토리 생성하기
fs.mkdir("newDir", (err) => { console.log("mkdir : ", err)});
// 동기로 디렉토리 생성하기
fs.mkdirSync("newDirSync");
디렉토리 삭제
// 비동기 디렉토리 삭제하기
fs.rmdir("newDir", (err) => {console.log('del : ',err)});
// 동기적으로 디렉토리 삭제하기
fs.rmdirSync("newDirSync");
데이터를 덮어쓰기
const originFile = "readData.js";
const writeData = `비동기적 덮어쓰기`;
const writeDataSync = `동기적 덮어쓰기`;
// 비동기적 데이터 덮어쓰기
fs.writeFile(originFile, writeData, (err) => {console.log('write : ',err)});
// 동기적 데이터 덮어쓰기
fs.writeFileSync(originFile, writeDataSync);
데이터를 추가하기
const originAddFile = "readData.js";
const writeAddData = `비동기적 추가`;
const writeAddDataSync = `비동기적 추가`;
// 비동기적 데이터 추가해 쓰기
fs.appendFile(originFile, writeData, (err) => {console.log('append : ',err)});
// 동기적으로 데이터 추가해서 쓰기
fs.appendFileSync(originFile, writeDataSync);
파일 읽기
// 마지막 인자로 콜백함수를 받고 아무값도 반환하지 않는다.
// 비동기적 파일 읽기
fs.readFile("readData.js", "utf8", (err) => {console.log('read : ',err)});
//동기적 파일 읽기
fs.readFileSync("readData.js", "utf8");
옵션을 추가해서 인코딩방식 바꾸기
이런식으로 중간에 옵션을 추가해서 인코딩 방식을 바꿀 수 있다는데 왠지 잘 안쓸듯.
fs.appendFile(originFile, writeData, "utf8", (err) => {
console.log("append : ", err);
});
fs.appendFileSync(originFile, writeDataSync, "utf8");
주의할점
동기적 코드와 비동기적 코드가 어떻게 실행되는지 알아야 나중에 실행결과를 예상할 수 있다.
https://hancoco.tistory.com/49
파일/디렉토리의 메타정보 추출하기
// 파일/디렉토리 비동기적으로 메타정보 확인
fs.stat("readData.js", (err, stats) => {
try {
console.log({
size: stats.size, //파일크기
mtine: stats.mtime, //파일수정시간
isFile: stats.isFile(), //파일인지 디렉토리인지
});
} catch (err) {}
});
// 파일/디렉토리 동기적으로 메타정보 확인
const stats = fs.statSync("readData.js")
console.log({
size: stats.size,
mtine: stats.mtime,
isFile: stats.isFile(),
})
출력결과
{ size: 44, mtine: 2022-07-17T09:46:03.989Z, isFile: true }
댓글