FileUtils
클래스에이 코드가 구현되어 있는데,이 코드는 어떤 소리가 들리는 지 알 수 있습니다. 모든 작업은 파일을 통과하여 해당 폴더 아래의 모든 폴더를 ArrayList
에 넣습니다. 따라서 어떤 파일을 반환 할 파일에 .listFiles()
메서드를 호출하는 것입니다.자체를 호출하는 메서드 내에서 ArrayList를 사용하는 방법
private static ArrayList<File> classFileList = new ArrayList<File>();
public static ArrayList<File> listFiles(File dir) {
if (!dir.isDirectory() || !dir.exists())
return null;
for (File file : dir.listFiles()) {
classFileList.add(file);
listFiles(file);
}
return classFileList;
}
위의 코드는 정상적으로 작동하지만 클래스 변수 ArrayList
이 작동해야합니다.
메서드 내에 ArrayList
을 만들면 호출 될 때마다 다시 설정되고 마지막 파일 만 반환됩니다. 하지만 지금 설정해 두었습니다. 메서드를 두 번 이상 호출하면 목록에 모든 파일의 복사본이 포함됩니다.
메소드 변수를 사용하거나 호출 된 후에 클래스 변수를 재설정하는 방법.
네, 내가 게시 한 직후에 생각한 것, 방금 해봤으므로 훌륭하게 작동합니다. 그러나 이것은 좋은 대답이라고 생각합니다. 그러나 for 루프에서 호출 될 때 classFileList와 매개 변수를 전달해야합니다. 당신이 그 편집을하는 한 나는 이것을 대답으로 받아 들일 것입니다. – Totalllyrandomguy
@Totalllyrandomguy 완료, 그것을 지적 해 주셔서 감사합니다. 사실 나는이 컴퓨터에 자바가 없으므로 메모장에 코드를 썼다. 그리고 그 질문을 복사하여 복사하십시오. :-) – Panther
파일을 전달해야합니다. listFiles()에는 2 개의 매개 변수가 있습니다! 또한 classFileList를 매개 변수로 전달하는 경우 메서드에 void 반환 유형이 있어야합니다. –