Heim  >  Artikel  >  Java  >  Java implementiert das Durchlaufen aller Dateien in einem Verzeichnis (einschließlich Unterverzeichnissen).

Java implementiert das Durchlaufen aller Dateien in einem Verzeichnis (einschließlich Unterverzeichnissen).

王林
王林nach vorne
2019-11-30 13:27:406533Durchsuche

Java implementiert das Durchlaufen aller Dateien in einem Verzeichnis (einschließlich Unterverzeichnissen).

Es gibt zwei Möglichkeiten, alle Dateien in einem Ordner in Java zu durchlaufen:

1. Rekursive Durchquerung

Es ist normalerweise die erste Methode, die Entwicklern einfällt.

Die Vorteile der rekursiven Durchquerung sind:

Die Implementierung ist relativ einfach, die Codemenge ist relativ gering und die Ausführungseffizienz ist hoch.

Die Nachteile sind:

Es verbraucht mehr Speicher und stellt höhere Hardwareanforderungen.

Freigabe von Online-Video-Tutorials: Java-Online-Video

Der spezifische Algorithmus lautet wie folgt:

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

Spezifische Idee:

Wenn Sie einen Ordner durchsuchen, fügen Sie ihn der verknüpften Liste hinzu, wenn es sich um einen Ordner handelt. Wenn es sich um eine Datei handelt, listen Sie ihn auf. Auf diese Weise wurden die Dateien und Ordner im Verzeichnis durchsucht und alle Ordner in der verknüpften Liste gespeichert. Sie müssen also nur noch die Dateien in den Ordnern in der verknüpften Liste durchsuchen. Die Durchlaufmethode ist dieselbe wie oben Betrieb.

Wenn es sich um einen Ordner handelt, fügen Sie ihn der verknüpften Liste hinzu. Natürlich müssen Sie den Ordner jedes Mal aus der Liste löschen. Hier ist

üblich lesen, sodass jedes Mal das erste Element der Liste gelesen und aus der Liste entfernt wird. Auf diese Weise ist der Durchlauf abgeschlossen, solange der Status der verknüpften Liste auf isEmty übertragen wird. linkedlist.removeFirst()

Der spezifische Algorithmus lautet wie folgt:

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

Empfohlene verwandte Artikel und Tutorials:

Java-Einführungs-Tutorial

Das obige ist der detaillierte Inhalt vonJava implementiert das Durchlaufen aller Dateien in einem Verzeichnis (einschließlich Unterverzeichnissen).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen