最近做了一道題目如下
批量修改文件名稱
假設(shè)你某天跟朋友出去玩薄料,使用某數(shù)碼相機(jī)拍攝了一些照片
但是當(dāng)你回來的時(shí)候你發(fā)現(xiàn)所有的照片都是如下命名的
P1020335.JPG
P1020336.JPG
P1020337.JPG
P1020338.JPG
P1020339.JPG
...
這些文件名實(shí)際上是自動(dòng)生成的救斑,對你來說不方便看。
你現(xiàn)在希望將這些照片都改成“2016-4-15-i”
i表示第幾張照片如
2016-4-15-1
2016-4-15-2
2016-4-15-3
請?jiān)O(shè)計(jì)一個(gè)程序?qū)崿F(xiàn)自動(dòng)修改哗总。
思路
封裝目錄
獲取該目錄下所有的文件的File數(shù)組
遍歷該File數(shù)組几颜,得到每一個(gè)File對象
拼接一個(gè)新的名稱,然后重命名即可
import java.io.File;
public class Java_2
{
public static void main(String[] args)
{
File file = new File("d:/photos");
File[] list = file.listFiles();
// 如果目錄下文件存在
if (file.exists() && file.isDirectory())
{
for (int i = 0; i < list.length; i++)
{
//取文件名子存入name中
String name = list[i].getName();
// 截取.之前的字符串出來
int index = name.indexOf(".");
// 截取.JPG出來
int index2 = name.lastIndexOf(".");
String name3 = name.substring(index2);
// 拼接字符串
String newName = "2016-4-15-" + (i + 1) + name3;
//重命名
File dest = new File("d:/photos" + "/" + newName);
list[i].renameTo(dest);
System.out.println(dest.getName());
}
}
}
}
我在網(wǎng)上下載了一堆JAVA教學(xué)視頻讯屈,在網(wǎng)上找過一堆批量重命名工具給他們重命名蛋哭,發(fā)現(xiàn)這些工具要么是太機(jī)械,把非本類名字的文件也給重命名了涮母,要么就是無法很好的實(shí)現(xiàn)其功能谆趾,所以寫了一個(gè)簡單的小程序,解決了我個(gè)人自己的需求
將F:\圣思源目錄下
[北京圣思園Java培訓(xùn)教學(xué)視頻]Java.SE.第八講.理解面向?qū)ο蟪绦蛟O(shè)計(jì).rar
[北京圣思園Java培訓(xùn)教學(xué)視頻]Java.SE.第二十七講.訪問控制符詳解.rar
..
/文件重命名為以下格式(僅去掉前綴)
Java.SE.第八講.理解面向?qū)ο蟪绦蛟O(shè)計(jì).rar
Java.SE.第二十七講.訪問控制符詳解.rar
....
并且直接略去本類中不滿足要求的文件夾或其他文件 并將修改好的文件放入D:/photos文件夾
package com.cskaoyan.java15;
import java.io.File;
public class JAVA_0119
{
public static void main(String[] args)
{
File file = new File("F:\\圣思源");
File[] list = file.listFiles();
// 如果目錄下文件存在
if (file.exists() && file.isDirectory())
{
for (int i = 0; i < list.length; i++)
{
//取文件名子存入name中
String name = list[i].getName();
// 截取"]"之前的字符串出來
int index = name.indexOf("]");
String name2 = name.substring(index + 1);
//重命名并存入d:/photos
File dest = new File("d:/photos" + "/" + name2);
list[i].renameTo(dest);
System.out.println(dest.getName());
}
}
}
總結(jié):用好File類方法和String類字符串拼接叛本,基本都可以解決有一定規(guī)律的文件批量重命名的問題
String類可能使用的方法
substring(int beginIndex)
截取從beginIndex到末尾的字符串并返回
substring(int beginIndex, int endIndex)
截取從beginIndex到endIndex的字符串并返回
concat(String str)
將指定字符串str連接到此字符串的結(jié)尾
indexOf(int ch)
返回指定字符在此字符串中第一次出現(xiàn)處的索引
indexOf(String str)
返回指定子字符串在此字符串中第一次出現(xiàn)處的索引
lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出現(xiàn)處的索引
lastIndexOf(int ch, int fromIndex)
返回指定字符在此字符串中最后一次出現(xiàn)處的索引沪蓬,從指定的索引處開始進(jìn)行反向搜索
length() 返回此字符串的長度
replace(CharSequence target, CharSequence replacement)
使用指定的字面值替換序列替換此字符串所有匹配字面值目標(biāo)序列的子字符串
replaceAll(String regex, String replacement)
使用給定的 replacement 替換此字符串所有匹配給定的正則表達(dá)式的子字符串
修改前
修改后