Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

Node.js에서 텍스트 파일을 읽어 배열로 변환하는 방법

Node.js를 사용하면 텍스트 파일을 읽어 그 내용을 배열(Array) 형태로 손쉽게 반환할 수 있습니다. 이렇게 만든 배열은 각 줄을 개별적으로 처리하거나 단순히 파일 내용을 확인하는 용도로 활용할 수 있습니다.

파일 읽기 작업은 Node.js의 기본 내장 모듈인 'fs' 모듈을 통해 수행되며, 대표적으로 fs.readFileSync()fs.readFile() 두 가지 메서드가 사용됩니다. 이 방법들은 용량이 큰 텍스트 파일을 다룰 때에도 유용하게 활용됩니다.

예제 1: readFileSync() 사용하기

fileToArray.js라는 이름의 파일을 생성하고 아래 코드를 복사해 붙여넣습니다. 파일 생성 후에는 다음 명령어로 코드를 실행할 수 있습니다.

node fileToArray.js

fileToArray.js

// fs 모듈 불러오기
let fs = require("fs")

// 파일명을 받아 readFileLines 함수 정의
const readFileLines = filename =>
    fs.readFileSync(filename)
    .toString('UTF8')
    .split('\n');

// 파일명을 인자로 readFileLines 함수 호출
let arr = readFileLines('tutorialsPoint.txt');

// 결과 배열 출력
console.log(arr);

위 코드는 파일을 UTF-8 문자열로 읽어 들인 뒤, 줄바꿈 문자(\n)를 기준으로 분할하여 배열을 만드는 방식입니다.

실행 결과

C:\home\node>> node fileToArray.js
[ 'Welcome to TutorialsPoint !',
    'SIMPLY LEARNING', '' ]

예제 2: 비동기 readFile() 사용하기

이번에는 비동기 방식으로 파일을 읽는 예제를 살펴보겠습니다. 콜백 함수를 통해 에러와 데이터를 함께 처리한다는 점이 특징입니다.

// fs 모듈 불러오기
var fs = require("fs")

// 파일명으로 readFileLines 초기화
fs.readFile('tutorialsPoint.txt', function(err, data) {
    if(err) throw err;
        var array = data.toString().split("\n");
    for(i in array) {
        // 결과 배열 출력
        console.log(array[i]);
    }
});

실행 결과

C:\home\node>> node fileToArray.js
Welcome to TutorialsPoint !
SIMPLY LEARNING

동기 방식과 비동기 방식의 차이

readFileSync()는 파일 읽기가 완료될 때까지 프로그램 실행을 잠시 멈추고 대기한 후 결과를 반환합니다. 코드 흐름이 직관적이고 순차적으로 실행되어 간단한 스크립트나 초기화 작업에 적합하지만, 파일이 크거나 I/O 작업이 많으면 전체 애플리케이션 성능에 영향을 줄 수 있습니다.

반면 readFile()은 비동기 방식으로 동작하여 파일을 읽는 동안에도 다른 작업을 계속 처리할 수 있습니다. 콜백 함수를 통해 에러(err)와 데이터(data)를 전달받아 처리하며, 여러 요청을 동시에 처리해야 하는 서버 환경에서 더욱 효율적입니다.