java 從指定文件夾搜索符合條件的文件

一下是代碼:

import java.io.File;

public class test {

	public static void main(String[] args) {
		// 這是需要獲取的文件夾路徑
		String path = "D:/changba20180127/music/";
		getFile(path, 0);

	}

	/*
	 * 函數名:getFile 作用:使用遞歸,輸出指定文件夾內的所有文件 參數:path:文件夾路徑 deep:表示文件的層次深度,控制前置空格的個數
	 * 前置空格縮進,顯示文件層次結構
	 */
	private static void getFile(String path, int deep) {
		// 獲得指定文件對象
		File file = new File(path);
		// 獲得該文件夾內的所有文件
		File[] array = file.listFiles();

		for (int i = 0; i < array.length; i++) {
			if (array[i].isFile())// 如果是文件
			{
				// for (int j = 0; j < deep; j++)//輸出前置空格
				// System.out.print(" ");
				if (accept(array[i], array[i].getName())) {
					String name = array[i].getName();
					// 只輸出文件名字 TODO
					System.out.println(name + "----");
					 //修改後的名字
					// int indexOf = name.indexOf(" (1).mp3");
					// String remeName = name.substring(0,indexOf)+".mp3";
					// System.out.println(remeName);
					// array[i].renameTo(new File("D:/changba20180127/original/"
					// + remeName ));

				} else {
					 System.out.println("==============");
				}

				// 輸出當前文件的完整路徑
				// System.out.println("#####" + array[i]);
				// 同樣輸出當前文件的完整路徑 大家可以去掉註釋 測試一下
				// System.out.println(array[i].getPath());
			} else if (array[i].isDirectory())// 如果是文件夾
			{
				for (int j = 0; j < deep; j++)
					// 輸出前置空格
					System.out.print(" ");

				System.out.println(array[i].getName());
				// System.out.println(array[i].getPath());
				// 文件夾需要調用遞歸 ,深度+1
				getFile(array[i].getPath(), deep + 1);
			}
		}
	}

	// 重寫accept方法,測試指定文件是否應該包含在某一文件列表中
	public static boolean accept(File dir, String name) {
		// TODO Auto-generated method stub
		// 創建返回值
		boolean flag = true;
		// 定義篩選條件
		// endWith(String str);判斷是否是以指定格式結尾的
		if (name.toLowerCase().endsWith(".jpg")) {

		} else if (name.toLowerCase().endsWith(".txt")) {

		} else if (name.toLowerCase().endsWith("(1).mp3")) {
			flag = true;
		} else {
			flag = false;
		}
		// 返回定義的返回值

		// 當返回true時,表示傳入的文件滿足條件
		return flag;
	}
}

設置搜索規則的函數是 accept() 中的判斷條件。

這裏稍微提一下一下兩個函數:

 startsWith方法測試此字符串從指定索引開始的子字符串是否以指定前綴開始。
 endsWith方法測試此字符串從指定索引開始的子字符串是否以指定尾綴結束。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章