> Java > java지도 시간 > Java는 디렉토리(하위 디렉토리 포함)의 모든 파일 탐색을 구현합니다.

Java는 디렉토리(하위 디렉토리 포함)의 모든 파일 탐색을 구현합니다.

王林
풀어 주다: 2019-11-30 13:27:40
앞으로
6600명이 탐색했습니다.

Java는 디렉토리(하위 디렉토리 포함)의 모든 파일 탐색을 구현합니다.

Java에서 폴더의 모든 파일을 탐색하는 방법에는 두 가지가 있습니다.

1. 재귀 탐색

은 일반적으로 개발자가 생각할 수 있는 첫 번째 방법입니다.

재귀 탐색의 장점은 다음과 같습니다.

구현이 상대적으로 간단하고 코드 양이 상대적으로 적으며 실행 효율성이 높습니다.

단점은 다음과 같습니다.

더 많은 메모리를 소비하고 하드웨어 요구 사항이 더 높습니다.

온라인 동영상 튜토리얼 공유: java 온라인 동영상

구체적인 알고리즘은 다음과 같습니다.

// 递归遍历
 private void getDirectory(File file) {
  File flist[] = file.listFiles();
  if (flist == null || flist.length == 0) {
      return 0;
  }
  for (File f : flist) {
      if (f.isDirectory()) {
          //这里将列出所有的文件夹
          System.out.println("Dir==>" + f.getAbsolutePath()); 
          getDirectory(f);
      } else {
         //这里将列出所有的文件
          System.out.println("file==>" + f.getAbsolutePath());
      }
  }
}
로그인 후 복사

2. 비재귀 순회

특정 아이디어:

폴더를 순회할 때, Go to linkedlist에 추가하고, 파일이면 나열합니다. 이렇게 하면 해당 디렉토리에 있는 파일과 폴더를 순회하게 되고 모든 폴더는 linkedlist에 저장되므로 이제 남은 것은 linkedlist에 있는 폴더에 있는 파일들을 순회하는 방법이다. 순회 방법은 위와 동일하다. 작업.

폴더인 경우에는 연결 목록에 추가하세요. 물론 목록에서 폴더를 꺼낼 때마다 목록에서 해당 폴더를 삭제해야 합니다. 매번 읽는 목록의 첫 번째 요소를 확인하고 목록에서 확인하세요. 이런 식으로 linkedlist의 상태가 isEmty로 순회되는 한 순회가 완료됩니다. linkedlist.removeFirst()

구체적인 알고리즘은 다음과 같습니다:

/**
	 * 非递归遍历
	 * @param file
	 * @return
	 */
	public static LinkedList<File> GetDirectory(String path) {
		File file = new File(path);
		LinkedList<File> Dirlist = new LinkedList<File>(); // 保存待遍历文件夹的列表
		LinkedList<File> fileList = new LinkedList<File>();
		GetOneDir(file, Dirlist, fileList);// 调用遍历文件夹根目录文件的方法
		File tmp;
		while (!Dirlist.isEmpty()) {
			tmp = (File) Dirlist.removeFirst();
			// 从文件夹列表中删除第一个文件夹,并返回该文件夹赋给tmp变量
			// 遍历这个文件夹下的所有文件,并把
			GetOneDir(tmp, Dirlist, fileList);
 
		}
		return fileList;
	}
 
	// 遍历指定文件夹根目录下的文件
	private static void GetOneDir(File file, LinkedList<File> Dirlist,
			LinkedList<File> fileList) {
		// 每个文件夹遍历都会调用该方法
		File[] files = file.listFiles();
 
		if (files == null || files.length == 0) {
			return;
		}
		for (File f : files) {
			if (f.isDirectory()) {
				Dirlist.add(f);
			} else {
				// 这里列出当前文件夹根目录下的所有文件,并添加到fileList列表中
				fileList.add(f);
				// System.out.println("file==>" + f);
 
			}
		}
	}
로그인 후 복사
추천 관련 기사 및 튜토리얼:

Java 입문 튜토리얼

위 내용은 Java는 디렉토리(하위 디렉토리 포함)의 모든 파일 탐색을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿