본문 바로가기

개발

[Node.js] File System



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, 10function(err){
      if (err){
         console.log(err);
      } 
      console.log("4.파일 자르기 성공!!");
      console.log("5.같은 파일 계속 읽기.."); 
      fs.read(fd, buf, 0, buf.length0function(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

맨 위로