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. ohcho
    파일이름 잘 정해야 겠네요.
  2. 박창신
    수강완료
  3. 강다리
    run
  4. 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을 출력하네요.

    제가 뭔가 다른 착각을 하고 있는걸까요? ^^
  5. 굼벵이
    완료
  6. CronEB
    완료
  7. YesterdayKite
    완료. 감사합니다!
  8. 코찔이
    코린이지만,, 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 자세히 보기