일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- https://velog.io/@velopert/create-typescript-react-component
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- toString
- object
- 출처 : https://webdir.tistory.com/506
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- 게시판
- Today
- Total
Back Ground
NodeJS - 파일 읽고 쓰기 [ES5] 본문
노드의 파일 시스템
파일관리 모듈을 불러와 사용한다.
1 | var fs = require('fs'); | cs |
동기식 IO와 비동기식 IO를 모두 제공해주는데
- 동기식 IO는 작업이 끝날 때까지 대기한다는 점에 주의한다.
파일 읽기 ( readFileSync / readFile )
동기식 IO 메소드 [ readFileSync() ]
.readFileSync('노드가 실행되는 경로','인코드'); |
이런식으로 사용이 가능하다.
예제)
1 2 3 4 | var fs = require('fs'); var data = fs.readFileSync('./study/day_04/aaa.txt','utf8'); console.log(data); | cs |
- return값은 해당 파일(aaa.txt)의 값을 갖고 있다.
비동기식 IO 메소드 [ readFile() ]
readFile('노드가 실행되는 경로','인코드',콜백함수(에러,데이터) ) |
이런식으로 사용이 가능하다.
예제)
1 2 3 4 5 6 7 8 9 10 | var fs = require('fs'); fs.readFile('./study/day_04/aaa.txt','utf8',function(err, data){ console.log("파일 다 읽었음"); console.log(data); }); console.log('끝났음'); | cs |
- callback함수를 실행 해 readFile은 비동기방식으로 처리되는것을 알수있다.
- readFileSync와 다르게 return값이 없다
- 대신 콜백을 통해 aaa.txt의 data를 받을 수 있다.
결과 :
Command: node "F:/study/node_study/day_04/04_readFile.js"
끝났음
파일 다 읽었음 undefined |
결과를 보면
> 끝났음
이 먼저 실행되고
> 파일 다 읽었음
이 후에 실행 된 것을 알수있다.
setTime아웃 처럼 파일을 다 끝난후 읽는데
파일읽는것에 대기 상관없이 진행된다. (로그인 프로그레스바 같은 것 만들때 유용하다.)
경로 지정시 주의 사항
현재 이 코드와 aaa.txt가 있는 위치는
studys/study/day_04 이 곳이다.
주의 해야 하는 사항은
js파일의 경로가 아닌 node가 실행되는 위치이다.
현재 brackets 에디터로 작업 하면서 폴더 경로위치를 studys 로 잡았기 때문에
저런 경로를 실행하게 되었다.
만약 CMD로 작업을 할 시
\studys\study\day_04>node test.js (예제 코드가 있는 js 파일) |
에러가 뜰 것이다.
node가 실행되는 위치는 day_04에서 실행했지만
js에서 잡은 경로가 다르기 때문에 이럴 경우
현재 node가 어디에서 실행되는지 패스를 가져온후 작업을 해야 된다.
(그러지않으면.. 배포할때마다.. 경로를 수정하는 미친짓이 발생할 테니.. )
파일 쓰기 ( writeFileSync/ writeFile)
파일쓰기 또한 읽기와 동일하다
동기 방식/ 비동기 방식 으로 나눠져있다
writeFileSync 동기방식
writeFileSync(filename, data, encoding) |
writeFile 비동기방식
writeFile(filename, data, encoding, callback(에러,데이터) ) |
이런식으로 되어져있다.
1 2 3 4 5 6 7 8 | var url= './study/day_04/img/'; var fileName='aaa.txt'; var encoding = 'utf8'; fs.writeFile(url+fileName,data,encoding,function(err){ if(err) console.log('Error'+err); else console.log("쓰기완료"); }); | cs |
이랬을 경우 안에 있던
그리고 유의해야 할 사항으로는 현재 aaa.txt는 텍스트 파일이지만
jj.jpg 라는 이미지 파일이 있을때 문제가 생긴다.
그 이유는 endoing때문에 그런데 이미지파일을 utf8로 인코딩해서 파일이 손상되기 때문에
파일이 무엇 인지에 따라서 적용시켜야 된다.
(node는 기본 utf8로 되어져있다.)
그래서 encoding을 빼고 넣거나 null 로 넣어주어야 된다.
1 2 3 4 5 6 7 8 | var url= './study/day_04/img/'; var fileName='jj.jpg'; var encoding = null; fs.writeFile(url+fileName,data,encoding,function(err){ if(err) console.log('Error'+err); else console.log("쓰기완료"); }); | cs |
읽기 쓰기와 같이 응용해서
복사를 한다고하면
1 2 3 4 5 6 7 8 9 10 11 12 13 | var url= './study/day_04/img/'; var fileName='jj.jpg'; var encoding = null; fs.readFile(url+fileName,encoding,function(err,data){ fileName='ii.jpg'; fs.writeFile(url+fileName,data,encoding,function(err){ if(err) console.log('Error'+err); else console.log("쓰기완료"); }); }); | cs |
이런식으로 만들어서 응용하면 될 것 같다.
'Javascript > Node.js' 카테고리의 다른 글
NodeJs - 스트림 단위로 파일 읽고 쓰기 [ES5] (0) | 2018.09.18 |
---|---|
NodeJS - 파일을 직접 열고 닫으면서 읽거나 쓰기 [ES5] (0) | 2018.09.14 |
NodeJS - 상속 [ES5] (0) | 2018.09.13 |
NodeJS - process [ES5] (0) | 2018.09.11 |
NodeJS - [노드에 대해] (0) | 2018.09.05 |