본문 바로가기
Node.js

[Node.js] 노드제이에스 - FS 모듈. 파일 관리하기

by Seong-Jun 2024. 2. 3.
728x90
반응형
SMALL

Do it! Node.js 프로그래밍 입문 공부단 2일차 입니다.

 

파일 관리하기

동기 처리로 파일 읽기 - readFileSync()

이 함수는 파일 내용을 버퍼 또는 문자열 형태로 반환합니다. 버퍼는 자료를 잠시 저장해 두는 임시 메모리 영역인데 자료를 읽어 오거나 다른 곳으로 이동할 때 임시 저장 공간으로 사용합니다.

fs.readFileSync(경로[,옵션])
- 옵션
 - encoding: 기본값인 null을 사용하면 버퍼에 있는 값인 바이너리 형태로 반환하고, utf8로 지정하면 사람이 읽을 수 있는 텍스트 형태로 가져옵니다.
 - flag: 기본값인 r을 사용하면 읽기모드로 엽니다.
  - r: 읽기 & 쓰기
  - w: 쓰기
  - a: 추가

const fs = require("fs")
const data = fs.readFileSync("./03/example.txt")
const data2 = fs.readFileSync("./03/example.txt", "utf8")
console.log(data)
console.log(data2)


비동기 처리로 파일읽기 - readFile()

fs.readFile(파일[,옵션], 콜백)
- 옵션
 - encoding
 - flag
 - signal : 파일을 읽는 데 시간이 너무 걸릴 경우 signal옵션을 사용해서 중간에 파일읽기를 취소할 수 있습니다.

const fs = require("fs")
fs.readFile("./03/example.txt", "utf8", (err, data) => {
    if(err) console.log(err)
    console.log(data)
})

 

파일 존재 여부 체크하기 - existsSync()

fs.existsSync(파일)

 

동기 처리로 파일에 쓰기 - writeFileSync()

fs.writeFileSync(파일, 내용[, 옵션])
- 옵션 : encoding(기본값 : utf8), flag(기본값: w), mode
 - mode: 파일에 사용자의 권한을 설정합니다. (기본값 : 0o666(읽기, 쓰기 권한))

const fs = require("fs")
const data = fs.readFileSync("./03/example.txt", "utf8")
if(fs.existsSync("./03/test.txt")) {
    console.log("file already exist")
}
else {
    fs.writeFileSync("./03/test.txt", data)
    console.log("test.txt : " + fs.readFileSync("./03/test.txt", "utf8"))
}

 

비동기 처리로 파일에 쓰기 - writeFile()

fs.writeFile(파일, 내용[, 옵션], 콜백)
- 옵션
 - encoding
 - flag
 - mode
 - signal : 파일에 내용을 기록할 때 시간이 너무 걸릴 경우 signal 옵션을 사용해서 중간에 파일 쓰기를 취소할 수 있습니다.

const fs = require("fs")
fs.readFile("./03/example.txt", "utf8", (err, data) => {
    if(err) console.log(err)
    fs.writeFile("./03/test2.txt", data, (err) => {
        if(err) console.log(err)
        console.log("text2.txt is saved")
    })
})

 

기존 파일에 내용 추가하기 - flag 옵션 사용

(Nx는 N과 같지만 파일이 있을 경우 실패합니다.)

 

a 내용을 추가하기 위해 파일을 여는데 없으면 만듭니다.
ax a와 같지만 파일이 이미 있으면 실패합니다.
a+ 파일을 읽고 내용을 추가하기 위해 파일을 여는데 없으면 만듭니다.
ax+ ax와 같지만 파일이 있을 경우 실패합니다.
as 동기 처리로 내용을 추가하기 위해 파일을 여는데 없으면 만듭니다.
w 쓰기 위해 파일을 여는데 없으면 만듭니다.
wx w와 같지만 파일이 있을 경우 실패합니다.
w+ 내용을 읽고 쓰기 위해 파일을 여는데 없으면 만듭니다.
wx+ w+와 같지만 파일이 있을 경우 실패합니다.

 

const fs = require("fs")
let content = `
============================================
새로운 내용 추가
============================================
`
fs.writeFileSync("./03/test.txt", content, {flag: "a"})

 

기존 파일에 내용 추가하기 - appendFileSync(), appendFile()

기존 파일에 내용을 추가할 때 flag옵션을 사용하지 않고 appendFileSync()나 appendFile()를 사용할 수 있습니다.

 

fs.appendFileSync(파일, 내용[, 옵션])
fs.appendFile(파일, 내용[, 옵션], 콜백)
- 옵션
 - encoding : 기본값 utf8
 - mode : 파일에 대한 퍼미션을 지정
 - flag : 기본값 w. 기존 파일에 내용 추가시 a사용

const fs = require("fs")
fs.appendFile("./03/test.txt", "\n\n새로운 내용 추가\n\n", (err) => {
    if(err) console.log(err)
    console.log("appending to file")
})

 

동기처리로 파일 삭제하기 - unlinkSync()

파일은 존재하지 않는 파일을 삭제해도 오류가 발생하지 않습니다. 그래서 fs 모듈에 있는 existsSync()를 사용해서 해당 파일이 있는지 체크해야 합니다.

const fs = require("fs")
if(!fs.existsSync("./03/text.txt")) console.log("파일이 없습니다.")
else {
  fs.unlinkSync("./03/text.txt")
  console.log("파일을 삭제했습니다."))
}

 

비동기 처리로 파일 삭제하기 - unlink()

const fs = require("fs")
if(!fs.existsSync("./03/text.txt")) console.log("파일이 없습니다.")
else fs.unlink("./03/text.txt", () => console.log("파일을 삭제했습니다."))

 

728x90
반응형
LIST

댓글