1
주어진 디렉토리 (및 하위 디렉토리) 내에서 지정된 확장명을 가진 모든 파일 목록을 가져 오려고합니다. 지금까지 내가 무엇을했는지 :Scala에서 특정 확장명을 가진 모든 파일 나열 디렉토리
var pipelineList: List[File] = Nil
private def getPipelines(dir: File): Unit =
{
val tmp = dir.listFiles();
for (f <- tmp) {
if (f.isDirectory())
getPipelines(f)
else if (f.isFile() && (f.getName.endsWith(".pipeline"))) {
pipelineList = pipelineList ::: List(f)
}
}
}
이 내가 ".pipeline"확장자를 가진 모든 앞장 설 받고 있어요하지만이 기능은 파일 객체 (목록, 배열 무엇이든)의 목록을 반환 할대로 작동 대신 외부 목록을 수정하는 것. 내부 목록을 선언했는데 재귀 호출은 매번 목록을 다시 초기화하고 결과 목록을 매개 변수로 전달하려고했지만 val에 다시 할당 할 수 없다는 내용을 추가하려고하면 Scala에서 오류가 발생합니다.
또한 다른 방법을 시도 :def getListOfFiles(dir: File): Array[File] = {
val filesList= dir.listFiles
filesList ++ filesList.filter(_.isDirectory).flatMap(getListOfFiles)
filesList.filter(_.getName.endsWith(".pipeline"))
}
이 성공적으로 디렉토리 아래의 모든 파일을 받고 있지만,이 조건이 충족됩니다에도 불구하고 아무것도 반환하지 않는 것 같은 필터가 작동하지 않습니다.
도움을 주시면 감사하겠습니다.
굉장! 감사합니다. 스칼라를 처음 접했습니다. 내 무지를 용서하십시오. 'filesList ++ filesList.filter (_. isDirectory) .flatMap (getListOfFiles) ' 은 새로운 변경 가능 배열을 반환하지만 필터 함수는 술어와 일치하는 요소 변경할 수없는 배열을 수정하려고하지는 않습니다. 권리? – noobCoder