자바스크립트 async/await와 파일 시스템 작업

자바스크립트는 비동기 처리를 위한 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!