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

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

王林
王林앞으로
2019-11-30 13:27:406538검색

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으로 문의하시기 바랍니다. 삭제