내장모듈 - path
파일 경로 정보
내장 모듈은 추가적인 npm 설치없이 require로 불러와서 사용할 수 있다.
var path = require("path");
var dir = ["users","happy","docs"];
var docDir = dir.join(path.sep);
console.log(docDir);
var curPath = path.join("/users/happy","notepad.exe");
console.log(curPath);
dir에 먼저 제이슨 형태로 데이터를 넣었다.
대괄호[]는 데이터를 배열로 넣는다는 의미이다.
- path.sep : 경로의 구분자(seperator)로 구분자를 찾아 연결한다.
배열 속의 데이터들이 자동으로 구분자를 통해 연결된다.
var filePath = "c:\\users\\happy\\notepad.exe";
var dirName = path.dirname(filePath);
var fileName = path.basename(filePath);
var extName = path.extname(filePath);
console.log(dirName);
console.log(fileName);
console.log(extName);
각각의 괄호 속에는 지정한 파일 경로를 입력해준다.
- path.dirname : 경로의 디렉토리 이름 (=폴더 경로)
- path.basename : 파일명 (확장자 포함)
- extname : 파일의 확장자명
console.log를 통해 나온 결과들을 순서대로 확인할 수 있다.
내장모듈 - fs
동기/비동기
내장모듈 fs를 통해 동기방식과 비동기 방식으로 파일을 읽어볼 것이다.
var fs = require("fs");
var data = fs.readFileSync("../data.json","UTF-8");
console.log(data);
//--------------------------------
fs.readFile("../data.json","utf-8", function(err, data) {
console.log(data);
});
console.log("파일을 읽음..");
- readFileSync : 동기 방식으로 파일 읽기
동기 방식은 실행이 끝날 때 까지 그 뒤의 내용이 실행될 수 없다.
온전히 끝나야만 다음 내용이 진행되는 것이다.
data.json 파일은 현재 있는 파일이 아닌 그 바깥에 있기 때문에 경로를 ..으로 두어 연결시켰다.
- readFile : 비동기 방식으로 파일 읽기
비동기 방식은 실행되는대로 먼저 출력된다.
파일을 읽는 동안, 다른 코딩이 먼저 끝난다면 그 코딩이 먼저 출력될 수 있다.
따라서 data의 내용이 많기 때문에 맨 밑의 "파일을 읽음"이 먼저 출력되고 난 후 data가 보여진다.
파일에 데이터 쓰기
fs.writeFile("./output.txt","오늘은 금요일~~",function(err){
if(err){
console.log("에러발생: " + err);
}
console.log("쓰기 완료!!");
});
console.log("aaa");
- writeFile : 파일을 만들어 데이터를 쓰며, 기존 파일이 있을 시엔 대체된다.
./은 같은 파일 내의 output.txt라는 이름으로 자동으로 파일을 만들어 문구가 함께 파일에 써지게 된다.
하지만 이미 같은 경로의 파일이 있다면, 해당 파일의 내용이 대체된다.
비동기 방식이며, 동기 방식일 때에는 sync를 뒤에 붙여준다.
파일 복사
파일을 복사하는 방법이다.
var inFile = fs.createReadStream("./output.txt",{flags: "r"});
var outFile = fs.createWriteStream("./output2.txt",{flags: "a+"});
inFile.on("data",function(str){
console.log("output.txt 읽음..")
outFile.write(str);
});
inFile.on("end",function(){
console.log("파일 읽기 종료..");
outFile.end(function(){
console.log("output2.txt 쓰기 완료..")
})
});
- createReadStream : 경로 속 파일을 읽어 온다.
- flags :
- r : read 읽기
- w : write 쓰기
- w+: (r+w)
- a+ : (r+w 누적) append 누적
변수 inFile에 파일을 읽어오며 이벤트 on을 통해 'data'라는 함수를 실행한다.
data는 예약어로 자동으로 실행되기 때문에 emit을 안써도 된다.
따라서 해당 파일에 있는 내용을 str에 담아서 읽어온다.
'end' 함수 역시 내장되었기에 위에서 파일을 다 읽어왔을 때 자동으로 실행되어 이벤트가 끝난다.
4월 1일 금요일 수업 🌗
'개발 교육 TIL > back-end' 카테고리의 다른 글
[Node.js] mongoose 모듈 - 설치 및 예제 (회원가입, 로그인) (0) | 2022.04.05 |
---|---|
[Node] Express 설치&서버 연결 / post 데이터 및 오류페이지(404) 출력 (0) | 2022.04.04 |
[Spring Boot] 스프링부트에서 JSP 사용하기 (0) | 2022.03.31 |
[Spring Boot] 스프링 부트 - 세팅, DB 연결(SqlSessionFactory, mapper) (0) | 2022.03.30 |
[Spring] 스프링 마이바티스 MyBatis (0) | 2022.03.29 |