[FE/JS] fs module

    728x90
    반응형

    2021.04.10

    17일차

     

    입사 34일차.

    React를 공부하기 위해 샀던 책 2권에는 fs에 대한 설명없이 fs.으로 시작하는 메소드들을 사용했기 때문에 좀 당황스러웠다. 내가 사용하는 기능들에 대해서는 꼭 알고 넘어가는 것이 나의 공부목표이기에 fs모듈에 대한 개념을 알고 기록하려고 한다.

     

     

     

    1. fs 모듈

      ① 출처 : 오픈튜토리얼스 (링크)

      ② FileSystem의 약자. 파일처리와 관련된 모듈이다.

      ③ const fs = require('fs'); 를 코드 맨위에 선언해주어야 사용가능하다.

     

     

    2. fs.writeFile( '경로 및 파일명', 작성할내용, [파일을 저장하는 방식], function(err) {} )

      ① fs.writeFile()은 비동기방식, fs.writeFileSync()는 동기방식이다.

      ② [파일을 저장하는 방식]은 생략가능하다. 'utf8'을 적어주면 된다.

      ③ 동기처리방식과 다른 것은 callback함수를 적어주는 것이다.

    // fs모듈을 사용하기 위한 선언
    const fs = require('fs'); {

    // 작성할 내용

    let contents = 'writeFile() 테스트';

    // 비동기처리방식
    fs.writeFile( 'writeTest.txt', contents, function(err) {
        console.log( 'writeFile() 비동기쓰기' );
    };

     

      ④ 제대로 동작했다면 writeTest.txt 파일이 생성되고, contents에 작성한 내용이 텍스트파일의 내용으로 저장된다.

     

     

     

     

     

     

    2. fs.readFile( '경로 및 파일명', [파일을 저장하는 방식], function( err, 파라미터 ) {} )

      ① fs.readFile()은 비동기방식, fs.readFileSync()는 동기방식이다.

      ② [파일을 저장하는 방식]은 생략가능하다. readFile()을 사용할때는 적어주는 것이 좋다.

    // fs모듈을 사용하기 위한 선언
    const fs = require('fs'); {

    // 텍스트 파일 읽어오기 ( option 생략 )

    let readData = fs.readFile( 'writeTest.txt', function( err, data ) {
        console.log( 'readData = ', data );
    });

    // 텍스트 파일 읽어오기 ( option = 'utf8' )
    readData1 = fs.readFile( 'writeTest.txt', 'utf8', function( err, data ) {
        console.log( 'readData = ', data );
    });

    // 텍스트 파일 읽어오기 ( 백틱사용하기 )
    let readData = fs.readFile( 'writeTest.txt', function( err, data ) {
        console.log( `readData = ${data}`);
    });

    [console]

    readData =<Buffer 77 72 69 74 65 46 69 6c 65 28 29 20 ed 85 8c ec 8a a4 ed 8a b8>

    readData = writeFile() 테스트
    readData = writeFile() 테스트

      ③ readFile()을 사용할때, option을 사용하지 않으면 원하는 값이 출력되지 않는다.

      ④ 백틱과 프로퍼티를 사용하면 option을 생략해도 원하는 값을 출력할 수 있다.

     

     

    JAVA의 FileinputStream, inputStreamReader와 유사한 기능을 가진 모듈이라고 생각하면 이해하기 쉬울 것 같다.

    728x90
    반응형

    댓글