Java查找指定文件夾下的所有文件


  • 為什么會有這個需求呢?

前兩天有個面試題,讓寫出讀取文件夾下所有文件的名稱,誒,說來慚愧,好長一段時間都在用框架寫怎刪改查,關於文件讀寫的API早就忘了,再加上當時學的不牢固,那題就沒做出來(說到底還是自己的基礎不好)。這不是閑了下來,自己趕緊記錄下來

  • 遞歸讀取指定文件夾下的所有文件,並保存到指定的txt文件中,不過遞歸的效率確實不怎么好。
import org.junit.Test;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;

/**
 * @Author: stone
 * @Date: 2021/03/28 23:26:13
 * @ClassName: ReadTxt
 * @Description:
 **/

public class ReadTxt {

	@Test
	public void WriteTxt() throws Exception {
		String path = ""; //這里寫你要讀取的文件夾
		String outputPath = "E:\\fileNameList.txt"; //這里寫你要保存到什么文件中,追加保存,不會覆蓋上一次保存的文件
		ArrayList<String> fileNameList = readFiles(path, new ArrayList<String>());
		System.out.println(fileNameList.size());
		for (int i = 0; i < fileNameList.size(); i++) {
			outputToTxt(fileNameList.get(i), outputPath);
		}

	}

	/**
	 * @Author: stone
	 * @Param:
	 * @return:
	 * @Description: 遞歸讀取文件路徑下的所有文件
	 **/
	public ArrayList<String> readFiles(String path, ArrayList<String> fileNameList) {
		File file = new File(path);
		if (file.isDirectory()) {
			File[] files = file.listFiles();
			for (int i = 0; i < files.length; i++) {
				if (files[i].isDirectory()) {
					readFiles(files[i].getPath(), fileNameList);
				} else {
					String path1 = files[i].getPath();
					String fileName = path1.substring(path1.lastIndexOf("\\") + 1); // Windows下,目錄是雙斜杠
					fileNameList.add(fileName);
				}
			}
		} else {
			String path1 = file.getPath();
			String fileName = path1.substring(path1.lastIndexOf("\\") + 1);
			fileNameList.add(fileName);
		}
		return fileNameList;
	}

	/**
	 * @Author: stone
	 * @Param:
	 * @return:
	 * @Description: 將內容輸入到txt文件保存
	 **/
	public void outputToTxt(String content, String outputPath) throws Exception {
		FileWriter fileWriter = new FileWriter(outputPath, true); // true代表追加內容
		PrintWriter printWriter = new PrintWriter(fileWriter);
		printWriter.println(content);
		printWriter.close();
		fileWriter.close();
		printWriter.flush();
	}
}



  • 使用JavaAPI
import org.junit.Test;

import java.io.File;

/**
 * @Author: stone
 * @Date: 2021/03/29 12:32:04
 * @ClassName: fileTest
 * @Description:
 **/

public class fileTest {

	public void listFilesForFolder(File folder) {
		for (File fileEntry : folder.listFiles()) {
			if (fileEntry.isDirectory()) {
				listFilesForFolder(fileEntry);
			} else {
				System.out.println(fileEntry.getName());
			}
		}
	}

	@Test
	public void testFIle() {
		File folder = new File(""); //自己定義要查找的路徑
		listFilesForFolder(folder); // 結果打印在控制台
	}
}

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM