Node FileSystem

4539 단어 NodeNode

filesystem 사용하기

  1. 사용자가 원하는 폴더 이름 생성 (video, captured, duplicated)
  2. 폴더 안에 있는 파일들을 다 돌면서 해당하는 mp4|mov = video, png|aae = captured,
    IMG_E로 시작하는 파일은 원본 파일과 E 붙인 파일 같이 duplicated에 넣기

과제 1
파일 정리하기, 원하는 폴더를 생성 후 파일들 넣기

정리할 폴더의 파일 이름들 읽어오기
파일 이름에 조건 달아서 존재하면 폴더 생성 후
파일을 생성한 폴더에 이동 시키기

이동할 폴더는 생성되어 있어야 한단다

그러므로 다시 정리

  1. 폴더 먼저 생성
  2. test에 있는 파일들 불러오기 (읽어오기)
  3. 조건 달아서 조건에 맞게 파일들 정리 이동

일단 fs 가져오기

const fs = require("fs");

이 파일 시스템은 동기/비동기 관련 함수를 제공한다.

세가지 형태 존재

  1. rename (비동기, callback(error,data))
  2. renameSync 쓰지말자 (동기, try catch 필요, 에러 뜨면 다음으로 넘어가질 못함), 리턴값x
  3. promises.rename().then().catch(0), 비동기

===================================================

폴더 생성

const fs = require("fs");

// 풀더 생성
// 폴더 3개를 만들어야 하는데 이걸 배열로 만드는 법

const folderName = ['test/video', 'test/captured', 'test/duplicated'];

for (let i = 0; i < folderName.length; i++) {
    try {
        //만약에 이 폴더가 없으면 만들어줘
      if (!fs.existsSync(folderName[i])) {
        fs.mkdirSync(folderName[i])
      }
    } catch (err) {
      console.error(err)
    }
};

파일 목록 읽어오기

const dir = "./test"; // 파일 목록 읽어올 폴더

fs.readdir(dir, function (err, filelist) {
  // fs모듈의 readdir함수를 사용해
  // 첫번째 인자로 파일 목록을 읽을 폴더(dir)를 가져오고
  // 콜백함수의 두번째 인자로 폴더(dir)의 파일목록(filelist)을 가져옴

  console.log(filelist);
  //배열을 foreach로 흩뿌려주기 (list를 string 으로)
  filelist.forEach(function (element) {
    console.log(element);
});

파일 확장자별로 찾기

경로 찾는 API (path)

const path = require('path')

여기서부터 남의 문법 봄.. 도대체 파일 이동은 어떻게 하는거래니?? rename이 답이더라

callback 에러가 자꾸 뜨는데 callback 함수를 정확히 모름 주의

https://www.youtube.com/watch?v=s1vpVCrT8f4

callback

내 함수를 나중에 다시 불러줘 (콜백함수)

비동기와 동기 타입이 존재한다.

hosting

모든 함수의 선언은 가장 먼저 호출됨 (hosting)

변수나 함수의 선언문을 유효범위의 최상단으로 끌어올려서 변수나 함수를 선언하기 이전에도 사용할 수 있도록 해주는 JavaScript의 특성

promise

https://www.youtube.com/watch?v=JB_yU6Oe2eE

callback 지옥 탈출구 promise (class)

제공자와 소비자로 나뉜다는걸 이해시키자

promise는 실행되자마자 바로 실행되니 주의하자. 불필요한 실행 주의

==============================================

여기서 발견한 문제들

  1. github와 vsc 연결
    https://0ver-grow.tistory.com/888
    https://velog.io/@blair-lee/VSCode%EC%97%90%EC%84%9C-Github-%EC%97%85%EB%A1%9C%EB%93%9C%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95%EC%A7%B1%EC%89%AC%EC%9B%80%E3%85%8B%E3%85%8B
    문제점 : 왜 자꾸 파일이.. readme 파일 때문에 그래?
  2. 연결은 했는데 계정 변경 해줘야해
    https://meaownworld.tistory.com/78
    Git Bash에서 터미널 계정을 변경하는 방법
    $ git config user.name
    $ git config user.email
    확인 후 변경
    $ git config --global user.name 변경을 희망하는 계정
    $ git config --global user.email 변경을 희망하는 이메일
  3. 에러 에러..

    https://github.com/npm/npm/issues/13461
    npm 캐시삭제, 멜로우 프로그램 삭제 다 해봄.. 결론은 되지를 아니해..
    대체 뭐야
    <해결법>

    element 즉, 이동시킬 파일명이 빠졌다 (슬랙의 도움을 받다)
    좀 제발, 에러가 뜨면 코드 먼저 분석해보자
  4. 자바스크립트 문법 공부해야함
  5. 엘리쌤꺼 따라하다 또 에러
    process 인자 전달이 잘 안됨 argv[2] 전달x
    경로를 잘 모르는 탓인가?

	이건 launch.json을 바꾸면 된다는데 (여기서 인자 전달)

 "program": "${workspaceFolder}//app2.js", 
  "args": ["test"],
  "restart": true,
  "runtimeExecutable": "nodemon"

아무래도 program 경로쪽이 문제인듯 싶다. 

좋은 웹페이지 즐겨찾기