2012-01-18 4 views
11

파일 디렉토리를 반복하고 파일이 숨겨져 있는지 테스트 할 수 있는지 궁금합니다. 현재, 파일이 '.'로 시작하는지 확인하고 있습니다. 아닙니다. 이것은 Mac (및 Linux, 아마도)에서 작동하지만, Windows에서 어떻게 할 것인지 궁금합니다. 또한, 기간은 리눅스의 모든 풍미에있는 파일을 숨길 것인가?Nodejs - 숨겨진 파일 확인

감사합니다.

코드

:

var fs = require('fs'); 
fs.readdir('/path', function(err, list) { 
    list.forEach(function(filename){ 
     var isHidden = /^\./.test(filename); 
     // etc ... 
    }); 
}); 

답변

6

는 설정 1 개 폴더, 보호 1, 숨겨진 1 및 특수 속성없이 1 개 개의 파일이 들어있는 폴더와 윈도우 7에 노드 된 0.6.x를 사용하여 몇 가지 빠른 테스트를했다.

내가이 폴더를 반복하고 항목에 대한 통계를 가져온 (fs.stat를 사용하여 (경로) 콜백), 이러한 결과입니다

testfolder 
fs.Stats.mode: 16895 

test_hidden.txt 
fs.Stats.mode: 33206 

test_norm.txt 
fs.Stats.mode: 33206 

test_prot.txt 
fs.Stats.mode: 33060 

당신이 볼 수 있듯이, 사람마다 다를 수있다 숨김/숨김/숨김 속성은 실제로는 실제 속성이며 파일 모드와 아무 관련이 없습니다.

Windows에서 숨겨진 파일을 안전하게 식별하려면 node.js 팀이 Windows에서 GetFileAttributes() API를 구현해야합니다 (C++ 또는 C#으로 완료 한 것처럼). AFAIK, 이것은 파이프 라인에 없습니다 (적어도 나는 빠른 인터넷 검색 후에 아무것도 찾지 못했습니다).

기간에 의해 접두어가 붙을 때 모든 유닉스 환경에서 파일이 숨겨져 있는지에 대한 질문은 : pov : yes에서 작동하지 않는 배포판을 보지 못했습니다.

+0

내 Windows 바탕 화면의 파일 및 폴더로 테스트. 적용한 표준 속성 조합이 무엇이든 모든 파일의 모드는 33060이고 모든 폴더의 모드는 16822입니다. http://stackoverflow.com/questions/13440589/retrieve-file-attributes-from-windows를 확인하십시오. 호스트 스크립트를 사용하는 솔루션의 경우 -cmd –

+1

위의 링크를 기반으로 숨겨진 파일을 처리하는 모듈을 작성했습니다 : https://www.npmjs.org/package/hidefile –

14

유닉스에서 숨겨진 파일과 디렉토리 경로를 효과적으로 검색하는 정규 표현식은 긴 경로 문자열 내에 존재할 가능성 때문에 조금 더 복잡합니다.

다음 사항은 동일하게 처리하려고 시도합니다.

/** 
* Checks whether a path starts with or contains a hidden file or a folder. 
* @param {string} source - The path of the file that needs to be validated. 
* returns {boolean} - `true` if the source is blacklisted and otherwise `false`. 
*/ 
var isUnixHiddenPath = function (path) { 
    return (/(^|\/)\.[^\/\.]/g).test(path); 
}; 
+1

'(/ | ^. \ /) \. + [^\/\.]/g) .test ('/. DS_Store'); ' – Izhaki

+1

@Izhaki - 업데이트 된 정규식. 지적 해 주셔서 감사합니다. –

+0

숨겨진 파일은 단순히 마침표로 시작하는 것으로 정의되어 있습니까? –