Node.js를 사용하여 텍스트 파일을 읽으시겠습니까?
단말기에 있는 텍스트 파일을 넘겨서 데이터를 읽어야 하는데 어떻게 해야 하나요?
node server.js file.txt
터미널에서 오는 길은 어떻게 지나가는데, 반대편은 어떻게 읽나요?
다음을 사용할 수 있습니다.process.argv
명령행 인수에 액세스하여 파일 이름을 가져오고 파일을 읽을 파일 시스템 모듈(fs)을 가져옵니다.예:
// Make sure we got a filename on the command line.
if (process.argv.length < 3) {
console.log('Usage: node ' + process.argv[1] + ' FILENAME');
process.exit(1);
}
// Read the file and print its contents.
var fs = require('fs')
, filename = process.argv[2];
fs.readFile(filename, 'utf8', function(err, data) {
if (err) throw err;
console.log('OK: ' + filename);
console.log(data)
});
당신을 위해 그것을 조금 분해하는 것.process.argv
일반적으로 0번째 항목은 "노드" 인터프리터이고 첫 번째 항목은 노드가 현재 실행 중인 스크립트이며 이후 항목은 명령줄에 전달됩니다.argv에서 파일 이름을 가져오면 파일 시스템 기능을 사용하여 파일을 읽고 내용을 원하는 대로 수행할 수 있습니다.사용 예는 다음과 같습니다.
$ node ./cat.js file.txt
OK: file.txt
This is file.txt!
[편집] @wtfcoder가 언급했듯이, "를 사용하여.fs.readFile()
메소드는 콜백 함수에 파일을 제공하기 전에 파일의 전체 내용을 버퍼링하기 때문에 최선의 방법은 아닐 수 있습니다.이 버퍼링은 잠재적으로 많은 메모리를 사용할 수 있지만 더 중요한 것은 node.js의 핵심 기능 중 하나인 비동기식 이벤트 I/O를 활용하지 않는다는 것입니다.
큰 파일(또는 파일)을 처리하는 "노드" 방법은 운영 체제에서 사용 가능한 각 청크를 사용하고 처리하는 것입니다.그러나 이렇게 파일을 읽으려면 파일을 직접(가능하면) 점진적으로 구문 분석/처리해야 하므로 버퍼링이 다소 불가피할 수 있습니다.
노드에 fs를 사용합니다.
var fs = require('fs');
try {
var data = fs.readFileSync('file.txt', 'utf8');
console.log(data.toString());
} catch(e) {
console.log('Error:', e.stack);
}
임호 씨.fs.readFile()
메모리에 있는 모든 파일을 로드하고 모든 파일을 읽을 때까지 콜백하지 않기 때문에 피해야 합니다.
텍스트 파일을 읽는 가장 쉬운 방법은 한 줄씩 읽는 것입니다.버퍼링된 판독기를 권장합니다.
new BufferedReader ("file", { encoding: "utf8" })
.on ("error", function (error){
console.log ("error: " + error);
})
.on ("line", function (line){
console.log ("line: " + line);
})
.on ("end", function (){
console.log ("EOF");
})
.read ();
.properties 또는 json 파일과 같은 복잡한 데이터 구조의 경우 파서를 사용해야 합니다(내부적으로는 버퍼링된 판독기도 사용해야 합니다).
읽기 스트림과 파이프를 사용하여 모든 파일을 메모리에 한 번도 읽지 않고 한 줄씩 파일을 읽을 수 있습니다.
var fs = require('fs'),
es = require('event-stream'),
os = require('os');
var s = fs.createReadStream(path)
.pipe(es.split())
.pipe(es.mapSync(function(line) {
//pause the readstream
s.pause();
console.log("line:", line);
s.resume();
})
.on('error', function(err) {
console.log('Error:', err);
})
.on('end', function() {
console.log('Finish reading.');
})
);
제가 드디어 일을 하게 된 완벽한 사례를 게시합니다.여기 파일을 읽고 있습니다.rooms/rooms.txt
에서.rooms/rooms.js
var fs = require('fs');
var path = require('path');
var readStream = fs.createReadStream(path.join(__dirname, '../rooms') + '/rooms.txt', 'utf8');
let data = ''
readStream.on('data', function(chunk) {
data += chunk;
}).on('end', function() {
console.log(data);
});
비동기적인 삶의 방식:
#! /usr/bin/node
const fs = require('fs');
function readall (stream)
{
return new Promise ((resolve, reject) => {
const chunks = [];
stream.on ('error', (error) => reject (error));
stream.on ('data', (chunk) => chunk && chunks.push (chunk));
stream.on ('end', () => resolve (Buffer.concat (chunks)));
});
}
function readfile (filename)
{
return readall (fs.createReadStream (filename));
}
(async () => {
let content = await readfile ('/etc/ssh/moduli').catch ((e) => {})
if (content)
console.log ("size:", content.length,
"head:", content.slice (0, 46).toString ());
})();
언급URL : https://stackoverflow.com/questions/9168737/read-a-text-file-using-node-js
'programing' 카테고리의 다른 글
도커 이미지는 어떻게 제거합니까? (0) | 2023.08.25 |
---|---|
도커에 nvm을 설치하는 방법은 무엇입니까? (0) | 2023.08.25 |
텍스트 영역 HTML 태그의 한 줄씩 읽는 방법 (0) | 2023.08.25 |
php와 mysql로 워드프레스 컨테이너를 시작하도록 설정된 도커 파일, 대신 mariadb를 시작합니다. (0) | 2023.08.25 |
PowerShell '문자열'에 하나의 따옴표를 사용할 수 있습니까? (0) | 2023.08.25 |