[node.js] 파일 입출력

[원본 링크]

파일 입출력 모듈로는 fs가 있다.
단순하게 파일을 하나 써넣으려면 이런식으로 하면 된다.

writeFileSync는 동기적으로, 그냥 우리가 해왔듯이 쓰기 작업을 한다. 노드가 비동기를 기본동작으로 삼아놔서 네이밍이 저렇게 된거다.
첫번째 인자는 경로+파일이름이다. 파일이 없거든 text.txt라는 파일을 만들어놓는다.
두번째 인자는 써넣을 데이터다. Hello World!라고 써넣었다.
세번째 인자는 선택적 인자인데, 명시하지 않으면 utf8 포맷을 기본으로 한다.

어쨌든 잘 실행이 됐다면

작업경로에 이렇게 떴을 것이다.

그럼 이제 다시 이걸 읽어보자
readFileSync를 쓰면 된다.
이건 쓰기 버전에서 2번째 인자만 증발한 대신에, 읽은 텍스트를 반환값으로 뱉어낸다.

잘 된다.


이번엔 비동기 버전을 써보자
사용법은 동기 버전과 거의 비슷하나,
실행 완료 시점을 예측할 수 없기 때문에 try-catch 방식의 예외처리를 할 수가 없다는 점이 다르다.
그래서 마지막 4번째 인자로 예외처리용 콜백함수를 전달해준다. 이렇게 전달된 콜백함수는 해당 작업이 다 끝나면 자동으로 호출된다.

이런식으로 쓰면 된다.

비동기 입력은 이와는 좀 다르다.
출력함수의 경우에는 그냥 뱉어버리고 마니까, 신경을 덜 써도 되는데 입력함수는 그렇지 않다.
입력을 받은 값을 로직 내에서 또 쓸 것 아닌가? 쓰려고 받을 것일테니 말이다.
그런데 알다시피 비동기 함수는 완료 시점을 알 수가 없으니, 동기 버전처럼 입력받은 값을 리턴하는 식으로 구현할 순 없다.
그래서 비동기 버전에선 입력받은 값을 콜백함수를 통해 처리하도록 한다.
두번째 인자가 그 입력값이 된다.