TIL 7주차 Node.js 모듈

3488 단어 nodejsTILTIL

📌fs 모듈

  • 파일 처리와 관련된 작업을 하는 모듈로, FileSystem을 의미
  • 동기/비동기로 나뉘는데, Sync라는 이름이 붙어있는 메소드가 동기방식을 사용
  • 비동기 형식은 항상 마지막 인수가 수행 완료 시 호출할 콜백 함수로 작성되어야 한다.

📎fs 메소드

fs.readFile(filename, [options], callback)

: filename의 파일을 [options]의 방식으로 읽은 후 callback으로 전달된 함수를 호출합니다.
: readFile은 파일내용을 String으로 가져오기 때문에, JSON.parse(data)를 해주어 객체 타입으로 변경해 줄 수 있다.
(비동기적)

let options = {
  encoding: 'utf8', // UTF-8이라는 인코딩 방식으로 연다.
  flag: 'r' // 읽기 위해 연다.
}

// /etc/passed 파일을 옵션을 사용하여 읽는다.
fs.readFile('/etc/passwd', options, ...) 
-----------

fs.readFile('test.txt', 'utf8', (err, data) => {
  if (err) {
    throw err; // 에러를 던진다.
  }
  console.log(data); //파일 읽기의 결과는 문자열이다.
});

fs.readFileSync(filename, [options])

: filename의 파일을 [options]의 방식으로 읽은 후 문자열을 반환합니다.(동기적)

fs.writeFile(filename, data, [options], callback)

: filename의 파일에 [options]의 방식으로 data 내용을 쓴 후 callback 함수를 호출합니다.
(비동기적)

fs.writeFileSync(filename, data, [options])

: filename의 파일에 [options]의 방식으로 data 내용을 씁니다.
(동기적)


📌path 모듈

파일과 Directory 경로 작업을 위한 유틸리티로, 경로작업을 할 때 사용

const path = require('path');

타 블로그 path module 정리
내 블로그 path 정리

📎__dirname, __filename

--dirname

: file 명을 제외한 절대 경로

console.log(__dirname); // /Users/ano/temp
path 

--filename

: file 명을 포함한 절대경로

console.log(__filename); // /Users/ano/temp/directory.js

📎path 모듈

path.resolve([…paths])

: 여러 인자를 넣으면 경로를 묶어 root 경로를 고려한 새로운 경로를 반환한다. path.join()과 비슷한데 resolve는 다음과 같은 특징이 있다.

: 오른쪽 인자 부터 읽어가며 절대경로를 만든다.
(앞으로의 예제에서 /a 를 root 폴더라고 가정하지만 /a' 가 root 폴더가 아닌 경우 working directory를 기준으로 root 폴더까지의 경로를 붙여서 절대경로를 만들어 반환한다.)

: ...paths < string > : A sequence of paths or path segments

: Returns : < string >

// 인자 c 부터 읽어 들인다.
path.resolve('/a', 'b', 'c');   
// Returns: /a/b/c

// /a 루트 폴더가 아닌 경우 root folder 까지의 경로를 붙여서 반환함 
// 현재 해당 파일을 실행시키는 경로가 User/ano/temp/directory.js 라면
path.resolve('/a', 'b', 'c');   
// Returns: User/ano/temp/a 를 반환

path.join([..paths])

  • 여러 인자를 넣으면 하나의 경로를 합쳐 반환하다. 상대경로를 표시하는 .. 와 현 위치를 표시하는 . 도 반영한 결과를 리턴
path.join('/foo', 'bar', 'baz/asdf', 'quux');
// Returns: '/foo/bar/baz/asdf/quux'

// 마지막 인자의 .. 가 현재 위치보다 한단계 위 상위 폴더를 의미하므로 
// '/foo/bar/baz/asdf/quux' 보다 한 단계가 위 폴더의 경로가 반환됨
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// Returns: '/foo/bar/baz/asdf'

// __dirname : User/ano/temp/direcotory 
// 상대경로와 절대경로를 인자로 전달한 경우 이를 반영한 결과를 리턴함
// 두 단계 올라간 User/ano 에서 /workspace 폴더로 내려가 다시 /ano 폴더를 찾음
path.join(__dirname, '..', '..','workspace', '.', '/ano');
// Returns: User/ano/workspace/ano 

참고)
fs 모듈 기초

좋은 웹페이지 즐겨찾기