fs 모듈

이재영·2023년 5월 1일
0

Node.js

목록 보기
5/12
post-thumbnail

fs 모듈

-> fs 모듈은 파일 시스템의 모듈로 , 파일 처리와 관련된 전반적인 작업하는 모듈이다.

폴더 만들기

const fs = require("fs")
// fs 내부 모듈을 호출

let folder = fs.existsSync("./Test");
//해당 경로에 Test라는 파일이 있는지를 확인하는 반환값을 folder 변수에 담음

// 폴더가 있는지 확인을 하는 메서드로 true, false를 반환하고, 동기적으로 작동한다 . 다른 메서드에서도 Sync 구문이 있는 메서드는 동기적으로 작동한다.

// 매개변수에는 폴더의 경로

if(!folder){ //folder가 false 일 때, 즉 폴더가 없을 때 
	//비동기적으로 실행됨
	fs.mkdir("./Test",(err)=>{
    	if(err){
        	console.log("에러남")
        }
        
        esle{
        	console.log("Test 폴더 잘 만들어짐")
        }
    })
    //동기적으로 실행됨.
	//fs.mkdirSync("./Test");
    
}

폴더안에 파일 만들기

//writeFile은 파일을 생성하면서 파일의 데이터를 작성할 수 있다.
//첫번째 매개변수에는 파일의 이름 경로
//두번째 매개변수에는 파일의 내용
//세번째 매개변수에는 콜백함수
//콜백함수의 매개변수는 에러 내용의 객체를 전달받는다.

//비동기적으로 실행됨.
fs.writeFile("./Test/temp.txt","Hello nodejs",(err)=>{
	
    if(err){
    	console.log(err);
    }
    else{
    	console.log("파일이 잘 만들어짐");
    }
})

// Sync가 붙었으니 동기적으로 실행된다.
// fs.writeFileSync("./Test/temp.txt","hello nodejs");
// console.log("파일이 잘 만들어짐");

파일 읽어오기

// readFile 은 파일을 읽어온다.
// 첫번째 매개변수로 파일의 경로
// 두번째 매개변수로 인코딩의 경로
// 인코딩 내용을 작성을 안하면 null로 나오는데
// null이면 buffer 객체로 읽어온다.
// 세번째 매개변수는 콜백 함수 / 콜백함수의 첫번째 매개변수는 에러의 내용 객체
// 두번째 매개변수는 읽어온 파일의 내용

fs.readFile("./Test/temp.txt","utf-8",(err,data)=>{
	if(err){
    	console.log(err);
	}
    else{
    	console.log(data);
    }
})

// 동기적으로 파일을 읽어온다.
// 메서드의 반환값으로 파일을 읽어온 data가 나옴.
// let data = fs.readFileSync("./Test/temp.txt","utf-8");
// console.log(data);

폴더를 제거하기

//rm 메서드는 폴더를 제거한다.
//첫번째 매개변수 삭제할 폴더의 경로
//두번째 매개변수로 옵션 객체를 전달하는데
//recursive :true 는 지정된 디렉토리와 모든 하위 디렉토리 및 해당 컨텐츠를 포함한 모든 컨텐츠를 삭제한다.
//세번째 매개변수로는 콜백 함수
//콜백함수 매개변수에는 에러의 내용 객체를 전달 받는다.

fs.rm("./Test",{recursive : true},(err)=>{
	if(err){
    	console.log(err);
    }
    else{
    	console.log("폴더 잘 삭제함");
    }
})

Http와 fs 모듈을 이용해 요청하는 url에 따라 html 불러오기

const http = require("http");
const fs = require("fs");

const server = http.craeteServer((req,res)=>{
	res.setHeader("Content-Type","application/json","charset=utf-8")
    
 const URL = req.url;
 
 if(URL==="/favicon.ico"){
 	res.end();
    return;
 }
 
 switch (URL){
 
 	case : "/"
    	fs.readFile("./views/main.html",(err,data)=>{
        	if(err){
            	res.statusCode = 404;
                res.end("파일없음");
            }
            else{
            	res.statusCode = 200;
                
                res.setHeader("Content-Type","text/html");
                res.end(data);
                
            }
        });
     	break;
     case : "/list"
    	fs.readFile("./views/list.html",(err,data)=>{
        	if(err){
            	res.statusCode = 404;
                res.end("파일없음");
            }
            else{
            	res.statusCode = 200;
                
                res.setHeader("Content-Type","text/html");
                res.end(data);
                
            }
        });
     	break;
     case : "/add"
    	fs.readFile("./views/add.html",(err,data)=>{
        	if(err){
            	res.statusCode = 404;
                res.end("파일없음");
            }
            else{
            	res.statusCode = 200;
                
                res.setHeader("Content-Type","text/html");
                res.end(data);
                
            }
        });
     	break;
        
      default;
     	break;
 }
 
});

server.listen(4000,()=>{
	console.log("서버 잘 열렸음");
})
profile
한걸음씩

0개의 댓글