MEAN STACK node.js
테스트 환경 : Windows 10 64-bit
File System fs 모듈을 사용해보자.
이전 포스팅에서도 테스트로 많이 사용한 모듈이다.
동기식 VS 비동기식
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | console.log("Program start\n"); var fs = require("fs"); // 비동기식 파일 읽기 fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log("비동기식 파일 읽기 : " + data.toString()); }); // 동기식 파일 읽기 var data = fs.readFileSync('input.txt'); console.log("동기식 파일 읽기 : " + data.toString()); console.log("Program Ended\n"); | cs |
결과출력
Program start
동기식 파일 읽기 :
지금 보는 내용은 input.txt에 입력된 내용입니다.
Program Ended
비동기식 파일 읽기 :
지금 보는 내용은 input.txt에 입력된 내용입니다.
파일 정보 얻기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | console.log("Program start"); var fs = require("fs"); console.log("파일 정보 얻기.."); fs.stat('input.txt', function (err, stats) { if (err) { return console.error(err); } console.log(stats); console.log("\n"); // 파일 타입 확인 console.log("isFile ? " + stats.isFile()); console.log("isDirectory ? " + stats.isDirectory()); console.log("isBlockDevice ? " + stats.isBlockDevice()); console.log("isCharacterDevice ? " + stats.isCharacterDevice()); console.log("isSymbolicLink ? " + stats.isSymbolicLink()); console.log("isFIFO ? " + stats.isFIFO()); console.log("isSocket ? " + stats.isSocket()); }); console.log("Program Ended\n"); | cs |
결과출력
Program start
파일 정보 얻기..
Program Ended
{ dev: -1532968052,
mode: 33206,
nlink: 1,
uid: 0,
gid: 0,
rdev: 0,
blksize: undefined,
ino: 2251799814129349,
size: 20,
blocks: undefined,
atime: Fri Dec 11 2015 09:24:52 GMT+0900 (대한민국 표준시),
mtime: Thu Dec 17 2015 13:44:37 GMT+0900 (대한민국 표준시),
ctime: Thu Dec 17 2015 13:44:37 GMT+0900 (대한민국 표준시),
birthtime: Fri Dec 11 2015 09:24:52 GMT+0900 (대한민국 표준시) }
isFile ? true
isDirectory ? false
isBlockDevice ? false
isCharacterDevice ? false
isSymbolicLink ? false
isFIFO ? false
isSocket ? false
파일 내용 자르기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | console.log("Program start\n"); var fs = require("fs"); var buf = new Buffer(1024); console.log("1.파일 열기 시작.."); // '+r' : 읽기와 쓰기를 위한 파일 열기, 파일이 존재하지 않으면 예외발생. fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("2.파일 열기 성공!!"); console.log("3. 10바이트 이후의 글은 자름."); // 열린 파일 10바이트로 자르기 fs.ftruncate(fd, 10, function(err){ if (err){ console.log(err); } console.log("4.파일 자르기 성공!!"); console.log("5.같은 파일 계속 읽기.."); fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){ if (err){ console.log(err); } // 바이트로 읽어서 출력 if(bytes > 0){ console.log(buf.slice(0, bytes).toString()); } // 파일 닫기. fs.close(fd, function(err){ if (err){ console.log(err); } console.log("6.파일 닫기 성공!!"); }); }); }); }); console.log("Program Ended\n"); | cs |
결과출력
Program start
1.파일 열기 시작..
Program Ended
2.파일 열기 성공!!
3.10바이트 이후의 글은 자름.
4.파일 자르기 성공!!
5.같은 파일 계속 읽기..
This is
6.파일 닫기 성공!!
! input.txt 파일의 내용을 영어로 바꿨다.
한글상태에서 10바이트로 자르니 출력부분에서 한글이 깨져나온다.
예제 사이트를 통해 독학하면서 느낀점은 노드는 비동기식 방식으로 작성해야 한다는 걸 매번 강조하는 거 같다.
이제 반 이상은 달려온거 같은데..
참조 : http://www.tutorialspoint.com/nodejs/nodejs_file_system.htm
'개발' 카테고리의 다른 글
[Node.js] Web Module - server & client (0) | 2015.12.18 |
---|---|
[Node.js] Global Objects (0) | 2015.12.17 |
[Node.js] Streams 사용하기 (0) | 2015.12.16 |
[Node.js] buffer 사용하기 (0) | 2015.12.16 |
[Java] 자바로 달력 만들기(콘솔출력) (0) | 2015.12.15 |