test.txt
(Javascript 소스의 동일한 폴더에있는) 의 내용을 읽고이 코드를 사용하여 표시하려고합니다.
var fs = require("fs");
fs.readFile("test.txt", function (err, data) {
if (err) throw err;
console.log(data);
});
의 내용은 test.txt
에 작성되었습니다 nano
.
Node.js readFile () 테스트
그리고 나는 이것을 얻고있다 :
Nathan-Camposs-MacBook-Pro:node_test Nathan$ node main.js
<Buffer 54 65 73 74 69 6e 67 20 4e 6f 64 65 2e 6a 73 20 72 65 61 64 46 69 6c 65 28 29>
Nathan-Camposs-MacBook-Pro:node_test Nathan$
답변
에서 워드 프로세서 :
인코딩을 지정하지 않으면 원시 버퍼가 반환됩니다.
어느 것을 설명 할 수 있습니다 <Buffer ...>
. utf-8
파일 이름 뒤에 두 번째 매개 변수로 유효한 인코딩을 지정하십시오 (예 :). 같은
fs.readFile("test.txt", "utf8", function(err, data) {...});
답변
시험
fs.readFile("test.txt", "utf8", function(err, data) {...});
기본적으로 인코딩을 지정해야합니다.
답변
이것은 Google에서 많이 나오므로 원래 질문 (강조 광산)에 대한 컨텍스트 정보를 추가하고 싶습니다.
Node.js의 fs.readFile ()이 문자열 대신 버퍼를 반환하는 이유 는 무엇 입니까?
파일은 항상 텍스트가 아니기 때문에
해도 당신이 프로그래머는 그것을 알고 : 노드 읽고하려는 파일에 무엇이 아무 생각이 없습니다. 텍스트 파일 일 수도 있지만 ZIP 아카이브 또는 JPG 이미지 일 수도 있습니다. 노드는 알 수 없습니다.
텍스트 파일을 읽는 것이 까다롭기 때문에
Node 가 텍스트 파일을 읽어야 한다는 것을 알고 있더라도 문자 인코딩 자체가 파일에 저장되지 않기 때문에 어떤 문자 인코딩 이 사용되는지 (즉, 파일의 바이트가 사람이 읽을 수있는 문자에 어떻게 매핑되는지) 여전히 알 수 없습니다. .
자신감이있는 텍스트 파일의 문자 인코딩 을 추측 할 수 있는 방법이 있지만 (파일을 열 때 텍스트 편집기가 수행하는 작업) 일반적으로 명시적인 지시없이 코드가 추측에 의존하는 것을 원하지 않습니다.
구조에 버퍼!
따라서 모든 세부 사항을 알 수 없으며 알 수 없기 때문에 Node는 내용에 대해 아무 것도 가정하지 않고 바이트 단위로 파일 바이트를 읽습니다.
그리고 그것은 반환 된 버퍼입니다 : 원시 바이너리 컨텐츠를위한 미처리 된 컨테이너. 이 내용을 해석하는 방법은 개발자에게 달려 있습니다.
답변
비동기 :
fs.readFile('test.txt', 'utf8', callback);
동조:
var content = fs.readFileSync('test.txt', 'utf8');
답변
Buffer 오브젝트를 리턴하고 있습니다.
문자열로 원하면 다음과 data.toString()
같이 변환 할 수 있습니다 .
var fs = require("fs");
fs.readFile("test.txt", function (err, data) {
if (err) throw err;
console.log(data.toString());
});
답변
data
변수는 포함 Buffer
개체를. 다음 구문을 사용하여 ASCII 인코딩으로 변환하십시오.
data.toString('ascii', 0, data.length)
비동기 적으로 :
fs.readFile('test.txt', 'utf8', function (error, data) {
if (error) throw error;
console.log(data.toString());
});