JavaScript에서 줄 단위로 파일 읽기

Ashok Chapagai 2023년10월12일
  1. 일반 JavaScript를 사용하여 JavaScript에서 한 줄씩 로컬 파일 읽기
  2. Node.js readline 모듈을 사용하여 JavaScript에서 로컬 파일 읽기
  3. Node.js의 line-reader 모듈을 사용하여 JavaScript에서 로컬 파일 읽기
JavaScript에서 줄 단위로 파일 읽기

이 기사에서는 Vanilla JS 및 JavaScript 프레임워크 Node.js를 사용하여 JavaScript를 사용하여 파일을 읽는 방법을 소개합니다.

일반 JavaScript를 사용하여 JavaScript에서 한 줄씩 로컬 파일 읽기

HTML 입력으로 넣은 로컬 파일을 읽는 간단한 JavaScript 함수를 만들 수 있습니다.

input HTML 태그를 사용하여 파일을 업로드하고 FileReader() 함수를 사용하여 파일의 내용을 한 줄씩 읽을 수 있습니다.

코드 예:

<input type="file" name="file" id="file" />
document.getElementById('file').onchange = function() {
  var file = this.files[0];
  var reader = new FileReader();
  reader.onload = function(progressEvent) {
    console.log(this.result);
  };
  reader.readAsText(file);
};

여기에서 입력 필드는 getElementById 메소드에 의해 선택되며, 이는 변경될 때마다(파일이 선택될 때마다) 기능을 트리거합니다. FileReader() 개체의 새 인스턴스를 만듭니다. 인스턴스 reader.onload가 트리거되면 progressEvent 매개변수가 있는 함수가 호출되고 콘솔에 파일의 전체 내용을 console.log(this.result)로 인쇄할 수 있습니다.

아래와 같이 파일 내용을 한 줄씩 읽도록 함수를 확장할 수 있습니다.

document.getElementById('file').onchange = function() {
  var file = this.files[0];
  var reader = new FileReader();
  reader.onload = function(progressEvent) {
    var fileContentArray = this.result.split(/\r\n|\n/);
    for (var line = 0; line < lines.length - 1; line++) {
      console.log(line + ' --> ' + lines[line]);
    }
  };
  reader.readAsText(file);
};

이전 방법의 확장된 스니펫은 split()을 사용하여 결과 변수에서 읽은 내용을 분할하고 fileContentArray 변수 배열에 저장합니다. 그런 다음 for 루프를 사용하여 fileContentArray 변수의 각 줄을 반복하고 파일 내용을 한 줄씩 인쇄합니다.

테스트 목적으로 다음 내용이 포함된 demo.txt 파일을 만듭니다.

Line 1
Line 2
Line 3

Line 5

이제 파일에 5개의 줄이 있는 것을 볼 수 있으며 HTML Input 요소에서 파일을 업로드하면 아래 출력과 같이 파일의 내용을 볼 수 있습니다.

출력:

1 --> Line 1
2 --> Line 2
3 --> Line 3
4 --> 
5 --> Line 5

파일의 줄 번호를 시각화하는 것과 같이 1 --> 내용은 무시할 수 있습니다.

Node.js readline 모듈을 사용하여 JavaScript에서 로컬 파일 읽기

이 방법을 사용하려면 Node가 설치되어 있는지 확인해야 합니다. 터미널 또는 명령 프롬프트에 node -v를 입력하여 확인할 수 있습니다. 이제 readline 모듈을 사용하여 파일 내용을 쉽게 읽을 수 있습니다. app.js 파일을 만들고 app.js 파일의 첫 번째 줄에서 아래와 같이 모듈을 가져옵니다.

const readline = require('readline');
const fs = require('fs');

readline 모듈은 Node.js에 내장되어 있으므로 명시적으로 설치하지 않습니다. fs 모듈을 사용하여 읽을 수 있는 스트림을 만들 수 있습니다. readline 모듈은 Readable Streams와만 호환되기 때문입니다.

예제 코드:

const readLine = require('readline');
const f = require('fs');
var file = './demo.txt';
var rl = readLine.createInterface(
    {input: f.createReadStream(file), output: process.stdout, terminal: false});
rl.on('line', function(text) {
  console.log(text);
});

app.js 파일을 demo.txt 파일과 동일한 폴더에 저장하고 node app.js 명령으로 실행할 수 있습니다.

출력:

Line 1
Line 2
Line 3

Line 5

Node.js의 line-reader 모듈을 사용하여 JavaScript에서 로컬 파일 읽기

Node.js line-reader 모듈을 사용하여 JavaScript에서 파일을 읽을 수 있습니다. 모듈은 오픈 소스이며 npm install line-reader --save 또는 yarn add line-reader 명령을 사용하여 설치해야 합니다.

line-reader 모듈을 사용하여 파일의 내용을 읽는 것은 eachLine() 메소드를 제공하기 때문에 쉽습니다. 파일을 한 줄씩 읽을 수 있습니다. app.js 파일 상단에서 const lineReader = require('line-reader')로 가져올 수 있습니다.

eachLine() 메서드는 두 개의 인수가 있는 콜백 함수를 사용합니다. 인수는 linelast입니다. line 옵션은 내용을 저장하고 last 옵션은 읽은 줄이 파일의 마지막 줄인지 알려줍니다. 두 번째 옵션은 부울 값을 나타냅니다.

예제 코드:

const lineReader = require('line-reader');
lineReader.eachLine('./demo.txt', (line, last) => {
  console.log(line);
})

app.js 파일을 demo.txt 파일이 있는 폴더에 저장하거나 파일의 경로를 명시적으로 설정할 수 있습니다. 그러면 파일 내용을 한 줄씩 읽어서 다음 위치로 출력을 인쇄합니다. 콘솔.

출력:

Line 1
Line 2
Line 3

Line 5
Ashok Chapagai avatar Ashok Chapagai avatar

Ashok is an avid learner and senior software engineer with a keen interest in cyber security. He loves articulating his experience with words to wider audience.

LinkedIn GitHub

관련 문장 - JavaScript File