Node.js에서 파일 읽기
이 짧은 기사에서는 Node.js에서 파일을 읽는 방법을 배웁니다.
Node.js에서 파일 읽기
fs
모듈은 파일 시스템 액세스 및 상호 작용을 위한 많은 유용한 기능을 제공합니다. fs
모듈의 특별한 기능은 모든 메서드가 기본적으로 비동기식이지만 동기화를 추가하여 동기식으로 작동할 수도 있다는 것입니다.
fs.readFile()
을 사용하여 Node.js에서 파일을 읽습니다. 파일 데이터 또는 오류를 호출하려면 파일 경로, 인코딩 및 콜백 함수를 전달해야 합니다.
fs.readFile()
메소드는 파일을 읽는 데 사용되는 내장 메소드입니다. 전체 파일을 버퍼로 읽습니다. require()
메서드는 const fs = require('fs')
와 같은 모듈을 로드하는 데 사용됩니다.
통사론:
fs.readFile(filename, encoding, callbackFn)
이 메서드는 세 가지 매개 변수를 허용합니다.
filename
- 이 필수 매개변수는 읽을 파일의 이름 또는 다른 위치에 저장된 경우 전체 경로를 보유합니다.encoding
- 이 매개변수는 파일의 인코딩을 보유하는 필수 매개변수입니다. 기본값은utf8
입니다.callbackFn
- 이 콜백 함수는 파일을 읽은 후에 호출됩니다.err
및data
라는 두 개의 매개변수를 사용합니다.
callbackFn 매개변수 |
설명 |
---|---|
err |
파일을 읽는 동안 오류가 발생한 경우. |
data |
읽고 있는 파일의 내용입니다. |
내용, 파일에 저장된 데이터를 반환하거나 파일을 읽는 동안 오류가 발생했습니다. 예를 들어 이해해 봅시다.
암호:
const fs = require('fs');
fs.readFile('/helloworld.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
출력:
Hello DelftStack readers!
또 다른 옵션은 동기 버전 fs.readFileSync()
를 사용하는 것입니다.
암호:
const fs = require('fs');
try {
const fileContent = fs.readFileSync('/helloworld.txt', 'utf8');
console.log(fileContent);
} catch (err) {
console.error(err);
}
출력:
Hello DelftStack readers!
fs/promises
모듈에서 제공하는 fsPromises.readFile()
메서드를 사용할 수도 있습니다.
암호:
const fsPromises = require('fs/promises');
async function FileReadFn() {
try {
const fileContent =
await fsPromises.readFile('/helloworld.txt', {encoding: 'utf8'});
console.log(fileContent);
} catch (err) {
console.log(err);
}
}
FileReadFn();
출력:
Hello DelftStack readers!
fs.readFile()
, fsPromises.readFile()
및 fs.readFileSync()
세 가지 모두 데이터를 반환하기 전에 파일의 전체 내용을 메모리로 읽습니다. 즉, 대용량 파일은 메모리 사용량과 프로그램 실행 속도에 큰 영향을 미칩니다.
파일 읽기가 완료될 때까지 기다리는 대신 보낼 준비가 된 데이터가 있는 즉시 HTTP 클라이언트로 스트리밍을 시작합니다. 스트림은 본질적으로 다른 데이터 처리 방법을 사용하는 것보다 두 가지 주요 이점을 제공합니다.
메모리 효율성
- 처리하기 전에 많은 양의 데이터를 메모리에 로드할 필요가 없습니다.시간 효율성
- 전체 페이로드를 사용할 수 있을 때까지 기다리지 않고 즉시 처리를 시작할 수 있으므로 데이터 처리를 시작하는 데 훨씬 적은 시간이 걸립니다.
파일 스트림에서 pipe()
메서드가 호출되고 소스를 가져와 목적지로 보냅니다. 대상 스트림은 pipe()
메서드의 반환 값이며 pipe()
에 대한 여러 호출을 함께 연결할 수 있는 매우 편리한 것입니다.
암호:
const fs = require('fs');
const http = require('http');
const nodeServer = http.createServer((req, res) => {
const fileStream = fs.createReadStream(`${__dirname}/helloworld.txt`);
fileStream.pipe(res);
});
nodeServer.listen(3000);
출력:
Hello DelftStack readers!
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn