Maison  >  Article  >  Java  >  Java implémente le parcours de tous les fichiers d'un répertoire (y compris les sous-répertoires)

Java implémente le parcours de tous les fichiers d'un répertoire (y compris les sous-répertoires)

王林
王林avant
2019-11-30 13:27:406559parcourir

Java implémente le parcours de tous les fichiers d'un répertoire (y compris les sous-répertoires)

Il existe deux façons de parcourir tous les fichiers d'un dossier en java :

Parcours récursif

Ceci. est généralement la première méthode à laquelle les développeurs peuvent penser.

Les avantages du parcours récursif sont :

Il est relativement simple à mettre en œuvre, la quantité de code est relativement faible et l'efficacité d'exécution est élevée.

Les inconvénients sont :

Il consomme plus de mémoire et a des exigences matérielles plus élevées.

Partage de didacticiels vidéo en ligne : vidéo en ligne Java

L'algorithme spécifique est le suivant :

// 递归遍历
 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. 🎜>

Idée spécifique :

Lorsque vous parcourez un dossier, s'il s'agit d'un dossier, ajoutez-le à la liste de liens, s'il s'agit d'un fichier, répertoriez-le. De cette façon, les fichiers et les dossiers du répertoire ont été parcourus et tous les dossiers sont enregistrés dans la liste liée, il ne reste donc plus qu'à parcourir les fichiers dans les dossiers de la liste liée. La méthode de parcours est la même que celle ci-dessus. opération.

S'il s'agit d'un dossier, ajoutez-le à la liste liée. Bien sûr, chaque fois que vous supprimez un dossier de la liste, vous devez supprimer le dossier de la liste. Ici,

est utilisé pour. lire, afin qu'il soit lu à chaque fois Le premier élément de la liste et le supprime de la liste. De cette façon, tant que le statut de la liste liée est transmis à isEmty, le parcours est terminé. linkedlist.removeFirst()

L'algorithme spécifique est le suivant :

/**
	 * 非递归遍历
	 * @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);
 
			}
		}
	}

Articles et tutoriels connexes recommandés :

Tutoriel d'introduction à Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer