JAVA - 【批量文件重命名】File

目錄

  • 批量文件重命名思路
  • 存在性判斷
  • 文件是否可讀、可寫、可執行、爲隱藏類型
  • 創建一個文件
  • 創建一個文件夾
  • 遞歸創建文件夾
  • 判斷File對象是文件是文件還是文件夾
  • 刪除一個文件/文件夾( 文件夾爲空不可刪除 )
  • 文件名稱獲取
    • 文件名
    • 文件父目錄
    • 文件全目錄
  • 文件夾高級獲取
    • list(FilenameFilter e)
    • listFile(FilenameFilter e)


<一> 批量文件重命名思路

  1. 獲取文件夾中所有待重命名文件(可選擇性獲取)
  2. 遍歷使用indexOf、lastIndexOf、subString截取原文件名
  3. 創建新名稱File對象,使用file.renameTo(newFile)重命名

<二> 基本操作API

package kyleeo.util01;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

public class FileAddDemo {
	public static void main(String[] args) throws IOException {
		// 存在性判斷
		File file = new File("aaa.txt");
		System.out.println(file.exists());
		// 是否可讀/可寫/可執行
		System.out.println(file.canRead());
		System.out.println(file.canWrite());
		System.out.println(file.canExecute());
		System.out.println(file.isHidden());
		System.out.println("---------------------------");

		// 創建一個文件
		File file1 = new File("aaa.txt");
		System.out.println(file1.createNewFile());

		// 創建一個文件夾
		File file2 = new File("aaa");
		System.out.println(file2.mkdir());

		// 遞歸創建文件夾
		File file2_1 = new File("aaa\\bbb\\ccc\\ddd");
		System.out.println(file2_1.mkdirs());

		// 判斷File對象是文件還是文件夾
		System.out.println(file1.isFile());
		System.out.println(file2.isDirectory());
		System.out.println("---------------------------");

		// 刪除一個文件/文件夾
		File file3 = new File("aaa");
		System.out.println(file3.delete());
		System.out.println("---------------------------");

		/*
		 * 文件獲取操作
		 */
		// 獲得文件名字符串 getName()
		// 獲得父級目錄字符串 getAbsolutePath()
		String s1 = file1.getName(); // aaa.txt
		String s2 = file1.getParent(); // null(依賴參數!)
		String s3 = file1.getAbsolutePath(); // 全部,包括文件名
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		System.out.println(new File("").getAbsolutePath()); // 獲取當前項目目錄
		System.out.println("---------------------------");

		/*
		 * 文件夾高級獲取操作(獲取其內部所有文件,空數組或null爲異常返回值) String[] list() File[] listFile()
		 */
		File file4 = new File(new File("").getAbsolutePath() + "\\" + "aaa");
		String[] arr = file4.list();
		for (String i : arr) {
			System.out.println(i);
		}
		System.out.println("---------------------------");

		// 文件重命名:renameTo(File f)
		File file1_1 = new File("aaa_change.txt");
		System.out.println(file1.renameTo(file1_1));

		/*
		 * 獲取e盤下所有.txt文件(一層)
		 */
		File file5 = new File("e:\\");
		File[] fileArray = file5.listFiles();
		for (File i : fileArray) {
			if (i.isFile()) {
				if (i.getName().endsWith(".txt")) {
					System.out.println(i.getName());
				}
			}
		}
		
		//上述判斷過於繁瑣,現在向list方法中傳入參數FilenameFilter對象
		String[] arr2 = file5.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				File temp = new File(dir,name);
				if(temp.isFile()) {
					if(temp.getName().endsWith(".txt")) {
						return true;
					}
				}
				return false;
			}
		});
		for(String i:arr2) {
			System.out.println(i);
		}
		
		/*
		 * indexOf、lastIndexOf、subString、renameTo配合使用可用於文件批量重命名!
		 */

	}
}

 

 

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