자바스크립트는 비동기 처리를 위한 async
/await
문법을 제공하여 프로그래머가 비동기 작업을 동기적으로 다룰 수 있게 해줍니다. 이 문법을 활용하면 파일 시스템 작업과 같이 비동기적으로 처리해야 하는 작업을 간편하게 다룰 수 있습니다.
fs
모듈
자바스크립트에서 파일 시스템 작업을 수행하기 위해 fs
모듈을 사용합니다. 이 모듈은 Node.js 환경에서 제공되며 파일 생성, 읽기/쓰기, 디렉토리 생성/삭제 등 다양한 파일 시스템 작업을 처리할 수 있습니다.
const fs = require('fs');
fs
모듈을 이용한 파일 읽기
fs
모듈을 사용하여 파일을 읽을 때는 fs.readFile()
메서드를 사용합니다. 이 메서드는 콜백 패턴(callback pattern)을 사용하지만, async
/await
와 함께 사용할 수 있습니다.
const fs = require('fs');
async function readFile(filePath) {
try {
const data = await fs.promises.readFile(filePath, 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
}
readFile('file.txt');
위의 예제에서는 fs.promises.readFile()
을 await
로 호출하여 파일을 비동기적으로 읽어옵니다. 읽은 파일의 내용은 data
변수에 저장되어 콘솔에 출력됩니다.
fs
모듈을 이용한 파일 쓰기
fs
모듈을 사용하여 파일을 쓸 때는 fs.writeFile()
메서드를 사용합니다. 이 메서드도 콜백 패턴을 사용하지만, async
/await
와 함께 사용할 수 있습니다.
const fs = require('fs');
async function writeFile(filePath, data) {
try {
await fs.promises.writeFile(filePath, data);
console.log('파일 쓰기 완료');
} catch (err) {
console.error(err);
}
}
writeFile('file.txt', 'Hello, World!');
위의 예제에서는 fs.promises.writeFile()
을 await
로 호출하여 파일에 데이터를 비동기적으로 씁니다. 파일에 데이터 쓰기가 완료되면 콘솔에 “파일 쓰기 완료”라는 메시지가 출력됩니다.
async
/await
를 이용한 파일 시스템 작업의 에러 처리
async
/await
문법을 사용할 때는 try
/catch
문을 이용하여 에러를 처리할 수 있습니다. 위의 예제에서도 try
/catch
문을 사용하여 파일 읽기/쓰기 작업 중 발생하는 에러를 처리하고 있습니다.
async function readFile(filePath) {
try {
const data = await fs.promises.readFile(filePath, 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
}
await
로 호출하는 작업이 실패하면, 해당 작업은 reject
상태로 변경되어 catch
블록으로 이동합니다. 이를 통해 파일 시스템 작업에서 발생하는 에러를 쉽게 처리할 수 있습니다.
마치며
자바스크립트의 async
/await
문법을 이용하면 파일 시스템 작업을 비동기적으로 처리할 때 코드의 가독성을 향상시킬 수 있습니다. fs
모듈을 활용하여 파일 읽기/쓰기 작업을 간략하고 효율적으로 수행할 수 있습니다.
만약 프런트엔드 환경에서 파일 시스템 작업을 다루는 경우, 웹 브라우저의 File API
를 활용하거나 서버와의 통신을 통해 파일 관리를 해야합니다.
더 많은 자세한 정보를 알고 싶다면 관련 문서를 참고하시기 바랍니다.
Happy coding!