반응형

File System 모듈이란?

  • 노드에서 파일 처리와 관련된 모듈

File System 모듈 사용 예제

File System 모듈을 이용해 파일 읽기 기능 구현

  1. main.js 와 같은 경로에 text.txt 파일을 만들고 "Hello!" 라는 문자열을 입력
  2. main.js 에 다음의 코드 입력 후 실행
// File System 모듈 추출
const fs = require('fs')

// text.txt 파일을 비동기적으로 읽어옴
fs.readFile('text.txt', 'utf8', function (error, data) {
    console.log(data)
})

// text.txt 파일을 동기적으로 읽어옴
const text = fs.readFileSync('text.txt', 'utf8')
console.log(text)

결과

File System 모듈을 이용해 파일 쓰기 기능 구현

  • main.js에 다음의 코드 입력 후 실행
// File System 모듈 추출
const fs = require('fs')

// tex1.txt 파일에 비동기적으로 쓰기
fs.writeFile('text1.txt', 'Hello!', 'utf8', function(error) {
    console.log('비동기적 파일 쓰기 완료')
});

// text2.text 파일에 동기적으로 쓰기
fs.writeFileSync('text2.txt', 'Hello!', 'utf8');
console.log('동기적 파일 쓰기 완료');

결과

  • main.js와 같은 디렉토리에 text1.text, text2.txt가 생성되고 둘 다 'Hello!'가 써져 있음

동기, 비동기 개념

  • 동기(Synchronous)
    • 요청과 결과가 한 자리에서 동시에 일어남
    • 요청을 하면 시간이 얼마나 걸리던지 결과가 주어져야 함
  • 비동기(Asynchronous)
    • 동기식과는 달리 동시에 일어나지 않음
    • 요청을 하면 응답을 계속 기다리지 않고 다른 작업을 해도 됨
  • 비교
    • 동기식의 장점은 비동기식에 비해 설계가 간단하고 직관적임
    • 동기식의 단점은 요청과 결과가 동시에 일어나야 되기 때문에 결과가 나올때 까지 다른 작업을 못함
    • 비동기식은 요청한 시점부터 결과가 나타나는 시점까지 다른 작업이 가능하기 때문에 자원을 더 효율적으로 사용 가능하다는 장점이 있음
  • 위의 파일 쓰기 코드에서 비동기식 작업을 먼저 써줬지만 동기식 작업이 먼저 끝난 이유는 비동기식 작업이 진행되는 동안 동기식 작업이 진행되었기 때문

동기, 비동기의 예외 처리

// 동기식 예외 처리
try{
    const data = fs.readFileSync('text.txt', 'utf8');
    console.log(data)
} catch(e) {
    console.log(e)
}

// 비동기식 예외 처리
fs.readFile('text.txt','utf8', function(error, data) {
    if(error) {
        console.log(error)
    } else {
        console.log(data)
    }
});
  • 위와 같이 동기식 예외 처리에서는 try catch 문을 사용하고 비동기식 예외 처리는 callback 함수를 사용해야 됨
반응형

↓ 클릭시 이동

복사했습니다!