用Java程式碼批量重新命名檔案

快樂的博格巴發表於2018-10-14

昨天做實驗,採了很多圖,由於使用了之前版本的採圖程式,導致圖片的命名全部錯了,就是在小於10的數字前面沒有加0,如02。導致接下來跑另一個程式的時候讀圖順序總是出錯,故寫了一個程式碼批量重新命名了這些檔案。由於正規表示式不會寫,只能用了最笨的方法來做。

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		String path = "F:/20180924L1/1000hz_2"; // 要批量修改的檔案所在的目錄
		File file = new File(path);
		boolean isDirectory = file.isDirectory();
		if (!isDirectory) { // 如果不是資料夾,就返回
			System.out.println(path + "不是資料夾!");
			return;
		}
		String[] files = file.list();
		File f = null;
		String newFileName = ""; // 新的檔名字
		String oldFileName = ""; // 舊的檔名字
		for (int i = 0; i < files.length; i++) { // 遍歷該資料夾下的所有檔案
			oldFileName = files[i];
			newFileName = oldFileName;

			boolean x1 = false;
			boolean x2 = false;

			int a, b, c, d;
			a = oldFileName.indexOf("_");
			b = oldFileName.indexOf(".");
			c = oldFileName.lastIndexOf("_");
			d = oldFileName.indexOf(".", c);
			String snum1 = oldFileName.substring(a + 1, b);
			String snum2 = oldFileName.substring(c + 1, d);
			if (Integer.parseInt(snum2) < 10) {
				newFileName = newFileName.substring(0, c + 1) + "0" + newFileName.substring(c + 1);
				x1 = true;
			}
			if (Integer.parseInt(snum1) < 10) {
				newFileName = newFileName.substring(0, a + 1) + "0" + newFileName.substring(a + 1);
				x2 = true;
			}
			// 如果檔名沒變,跳過它
			if (!(x1 || x2)) {
				continue;
			}

			// 將修改後的檔案儲存在原目錄下
			f = new File(path + "/" + oldFileName);
			f.renameTo(new File(path + "/" + newFileName));
		}
	}
}
複製程式碼

把一大批類似於

String s = "1000hz_12.0v1_6.0v2.jpg";
複製程式碼

這樣的檔名重新命名為

"1000hz_12.0v1_06.0v2.jpg"複製程式碼

相關文章