Node.js

Node.js - 파일 목록 알아내기

수업소개

Node.js에서 특정 디렉토리 하위에 있는 파일과 디렉토리의 목록을 알아내는 방법을 알아보겠습니다. 

 

 

 

강의

 

 

 

소스코드

nodejs/readdir.js

var testFolder = './data';
var fs = require('fs');

fs.readdir(testFolder, function(error, filelist){
  console.log(filelist);
})

 

댓글

댓글 본문
작성자
비밀번호
  1. 파이어뱃
    node 실행을 어디서 하느냐에 따라 다른데 아마 작성자님께서는
    node 샐행을 nodejs폴더 안에서 하신 것 같아요
    egoing님꼐서는 node실행을 web2_nodejs에서 하신거고요. 그래서 결론이 다른 것 같습니다.^^

    2019_12_05 complete
    대화보기
    • 러퍼맨
      testFolder 변수에 './data/' 를 넣고 했을때 없다고 떴는데 '../data/'를 넣으니 실행이 되네요 '..'표시가 부모디렉터리니까 다른폴더인 data에 있는 파일을 읽어들이려면 ./data/가 아닌 ../data/가 맞는듯합니다.. 저는 윈도우로 했는데 다른 OS에서는 다를까요?
    • codinginpain
      완료이므니당
    • 파일이름 잘 정해야 겠네요.
    • 박창신
      수강완료
    • 강다리
      run
    • Wool Seo
      너무 잘 배우고 있습니다.
      서브 폴더에 있는 파일들도 목록으로 만들고 싶어 다음과 같이 코드를 작성했습니다.
      재귀를 이용했는데, 함수를 다시 불러오는 시점이 이상해보입니다.
      파이썬에서도 이 알고리즘으로 서브폴더 파일 목록을 출력해봤는데
      자바스크립트는 좀 다른가요?


      //////////////////////
      var testFolder = './known_data/';
      var fs = require('fs');

      function filesearch(dirname) {
      fs.readdir(dirname, function(error, filelist) {
      var i = 0;

      while( i < filelist.length) {
      full_filename = dirname + filelist[i];
      if( fs.lstatSync(full_filename).isDirectory() ) {
      console.log(i);
      filesearch(full_filename+'/'); //다시 호출
      }
      else {
      console.log(full_filename);
      }
      i = i + 1;
      }
      });
      return;
      }

      filesearch(testFolder);
      /////////

      가령 폴더 구조가
      111(폴더)
      - 1110
      - 1111
      - 1112
      112(폴더)
      - 1120
      - 1121
      1130
      1140

      이런 형태로 되어 있을 때,
      "111"이 폴더이므로 1110, 1111, 1112를 출력한 다음에
      "112"를 확인하고 1120, 1121를 출력하고, 이어 1130, 1140을 출력할꺼라 생각했는데

      일단 1130, 1140을 출력한 다음에 1110, 1111, 1112 그리고 1120, 1121을 출력하네요.

      제가 뭔가 다른 착각을 하고 있는걸까요? ^^
    • 굼벵이
      완료
    • CronEB
      완료
    • YesterdayKite
      완료. 감사합니다!
    • 코찔이
      코린이지만,, readdir.js입장이아니고 cmd가 실행하는 장소니까 cmd의 디렉토리위치로 보시면 맞을것같아요!
      cmd web2-nodejs(현재 디렉토리)
      ./data === web2-nodejs/data
      대화보기
      • Stephen Lee
        nodejs 공식 사이트를 찾아보다가 생각났는데 readdir 이 애초에 읽을 '폴더' 를 찾을때 디렉토리 기준으로 찾는다 생각하면 이해가 될 것 같습니다. readdir 함수를 사용할시 시작점이 nodejs 폴더인거죠. 그러면 nodejs폴더 기준으로 ./ 는 root 디렉토리가 될것이고 ./data 를 기입했을시 정상적인 값이 잘 뜨는 게 이해가 됩니다.
        대화보기
        • Stephen Lee
          저도 마찬가지로 의문이 드네요 readdir.js 는 nodejs 폴더안에 있고 ./ 는 현재 디렉토리를 의미하는것이니 nodejs 폴더 하위를 찾아야하는게 아닌가 생각돼 헷갈립니다.
          대화보기
          • 하호윤
            현재 readdir.js는 nodejs폴더 안에 있으니까 readdir.js입장에서는 data폴더를
            현재 자기 위치 폴더 위에 올라간 후 찾아야 되는거 아닌가요?
            즉 testFolder 주소를 ./../data 라고 하는 것이 아닌지 궁금합니다.
          • 허공
            190510 감사합니다.
          • 이루
            완료
          • youngjin.lee
            Completed
          • 위준우
            완료
          • 자유로움
            완료
          • lunayyko
            ../ 하면 상위 폴더로 올라가게 됩니다~
            대화보기
            • supernet
              완료
            • 지미츄
              완료 감사합니당
            • 호두
              고맙습니다.
            • 권문수
              감사합니다^^ 이런 함수도 있었군요..
            • popinbompin
              카스 에베베 우웅! 완료
            • twinpooh@gmail.com
              카렌 에델 웅 완료
            • 족발
              ㄳㄳ
              대화보기
              • 삼고잉
                잘 읽었습니다
              • Gimme_Gsuit
                http://88240.tistory.com/122 요기 상대경로 절대경로 정리 해놓은 겁니다. 참고바랍니다. ㅎㅎ
              • Gimme_Gsuit
                ./ 와 ../의 차이가 뭔지 알 수 있을까요??
                대화보기
                • 최성흠
                  감사합니다
                • Juho
                  혹시 ./data로 했음에도 undefined로 뜨시는분들은 ../data로 바꿔서 해보세요
                • moon
                  감사합니다.
                • Seo Yun Seok Tudoistube
                  'node 실행할파일' 의 관점에서 testFolder 의 상대경로를 표시해줘야 하는거군요.
                  감사합니다!
                graphittie 자세히 보기