2017-04-12 9 views
0

다른 파일 형식을 가진 폴더에서 오디오 파일 만 가져 오려고합니다. 이미지, 비디오 등.fs.readFileSync()를 사용하여 특정 파일을 가져 오는 방법

나는 결과를 필터링하는 함수를 만들었지 만 내가 잘못하고있는 첫 번째 오디오 파일 만 반환합니다.

커피 스크립트 :

@audioFiles = @getAudioFiles() 

getAudioFiles: -> 

    allFiles = fs.readdirSync(@pathtoMusic.toString()) 
    musicFiles = Array 
    file = 0 
    cont = 0 

    #-- I also tried with a for loop --# 
    #for file of allFiles 
    # fileName = allFiles[file] 

    while(file < allFiles.length) 
    fileName = allFiles[file++] 
    fileExtension = fileName.split('.').pop(); 

    if(fileExtension is "mp3") or (fileExtension is "MP3") 
     musicFiles[cont++] = fileName 
    if(fileExtension is "wav") or (fileExtension is "WAV") 
     musicFiles[cont++] = fileName 
    if(fileExtension is "3gp") or (fileExtension is "3GP") 
     musicFiles[cont++] = fileName 
    if(fileExtension is "m4a") or (fileExtension is "M4A") 
     musicFiles[cont++] = fileName 
    if(fileExtension is "webm") or (fileExtension is "WEBM") 
     musicFiles[cont++] = fileName 

    return musicFiles 

은 함수 나 루프를 만들 필요없이? 직접 할 수있는 방법이 있나요. 그것은 환상적 일 것입니다. 이 같은. 타사 종속성을 사용하여 열려 경우

fileExtensions = ["mp3","m4a","3gp","wav","webm","etc"...] 
@audioFiles = fs.readdirSync(pathToMusic,"fileExtencions") 
+0

나는 문제를 해결. 잘못된 배열 길이를 받고 있음을 알았습니다. 길이를 지정하지 않고 배열 (musicFiles = Array)을 선언했기 때문입니다. –

답변

1

, globby을 사용하는 것이 좋습니다 :

const globby = require('globby'); 

// Perform a basename-only match if the pattern does not contain 
// any slash characters. That is, *.js would be treated as equivalent 
// to **/*.js, matching all js files in all directories. 
const options = { matchBase: true }; 
const fileTypes = ['*.mp3', '*.wav', '*.3gp', '*.m4a', '*.webm']; 

globby(fileTypes, options).then(paths => { 
    console.log(paths); 
}); 
+0

타사 종속성을 사용하는 데 익숙하지 않지만 시도 할 것입니다. 내가 작업하고있는 패키지에 어떻게 의존성을 설치할 수 있습니까?. 나는 원자 패키지에 대해 연구 중이다. –

+0

의존성은'npm install globby' 또는 프로젝트의'package.json'을 통해 설치할 수 있습니다. 'npm install globby -S' – idleberg

0

이런 일에 대해 어떻게 :

getAudioFiles = => 
    fileExtensions = [ 
    "mp3" 
    "m4a" 
    "3gp" 
    "wav" 
    "webm" 
    "etc" 
    ] 
    allFiles = fs.readDirSync @pathtoMusic.toString() 
    musicFiles = (file for file in allFiles when file.replace(/.*\./, '') in fileExtensions)