import java.io.*
import java.sql.*
public class RenameFile
{
File parentFile
public RenameFile(File parentFile)
{
this.parentFile = parentFile
readDataBase(parentFile.list())
}
private void readDataBase(String[] list)//这个函数里读数据库的方式可能跟你的不一样,自己看着改改
{
for(String oldName:list)
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
Connection conn = DriverManager.getConnection("jdbc:odbc:DSN","","")//DSN是数据源名字
Statement st = conn.createStatement()
ResultSet rs = st.executeQuery("Select * from TABLENAME where FILENAME = "+oldName)//TABLENAME是数据库里表的名字,FILENAME是表示文件名的字段的名字
while (rs.next())
{
String newName = rs.getString("NUMBER")//NUMBER是表示学号的字段,getString要根据你定义的数据类型作改动为getInt或其他
rename(oldName,newName)
}
}
catch (Exception e)
{
e.printStackTrace()
}
}
}
private void rename(String oldName, String newName)
{
try
{
File source = new File(parentFile.toString()+"\\"+oldName)
File target = new File(source.getParent()+"\\"+newName)
boolean res = source.renameTo(target)
}
catch (Exception e)
{
e.printStackTrace()
}
}
public static void main(String [] args)
{
String path = "path"//这里把path改成文件夹的路径
File file = new File(path)
new RenameFile(file)
}
}
_______________________________
for(String oldName:list)
这个是java 5.0以后才出现的新语法,也是一种循环,这个循环的次数是list的元素个数,用oldName作为临时变量,指代list中的每一个元素。
当然你也可以这样写:
for(int i=0, i<list.length(), i++)
public class FileNameTest {
/**
* 修改文件名称
* @param file
*/
public static void changeFileName(File file){
File[] files = file.listFiles()//遍历文件夹下的所有文件
//因为你这文件夹下全是文件,所以这里没用递归
for (int i = 0i <files.lengthi++) {
File f = files[i]//获取文件
String fileName = f.getName()//获取文件名称
fileName = fileName.replace("韩顺平.循序渐进学.java.从入门到精通.", "")//你这里文件名有规律,所以我这里直接用replace方法来替换原来的文件名
f.renameTo(new File("D:\\Program Files\\视频\\"+fileName))//这里就是修改后的新文件名
}
}
/**
* main函数
* @param args
*/
public static void main(String[] args){
File file = new File("D:\\Program Files\\视频")
changeFileName(file)
}
}
如果只有一百个,手动也不是不行,细心就成
如果会写一点程序也可以 *** 作,比如把100个人的身份z号放到一个数组中,然后用一个循环分别对原为1到100的文件重命名为数组中的值
随手写一个10个人的例子(一百一千也同理)
Excel存储的身份z号
重命名前
重命名后
附程序(以Java为例,写的不严谨但可用,大佬轻喷)
开发环境: JDK8 需要依赖POI
import org.apache.poi.xssf.usermodel.XSSFRow
import org.apache.poi.xssf.usermodel.XSSFSheet
import org.apache.poi.xssf.usermodel.XSSFWorkbook
import java.io.*
public class BatchRename {
public static void main(String[] args) throws IOException {
String rootDir = "E:"+ File.separator +"Work"//文档所在的文件夹,比如E:\\Work
String[] idNumArr = new String[10]
File file = null//存储旧的文件对象
File fileNew = null//存储新的文件对象
File excelFile = new File("E:"+ File.separator +"杂货屋"+File.separator+"身份z号.xlsx")//Excel文件对象
//读取Excel中的身份z号
FileInputStream fis = new FileInputStream(excelFile)
XSSFWorkbook wb = new XSSFWorkbook(fis)
for(int numSheet = 0numSheet<wb.getNumberOfSheets()numSheet++){
XSSFSheet xssfSheet = wb.getSheetAt(numSheet)
//遍历所有表
if(xssfSheet==null){
continue
}
//遍历所有行
for (int numRow = 0numRow <= xssfSheet.getLastRowNum()numRow++) {
XSSFRow xssfRow = xssfSheet.getRow(numRow)
if(xssfRow!=null){//根据需求处理具体的列
idNumArr[numRow] = xssfRow.getCell(0).getStringCellValue()
}
}
}
for (int i = 0i <10i++) {
file = new File(rootDir+File.separator+String.valueOf(i+1)+".docx")
fileNew = new File(rootDir + File.separator + idNumArr[i]+".docx")
if(!file.renameTo(fileNew)){
System.out.println(rootDir+File.separator+String.valueOf(i+1)+"重命名失败")
}
}
}
}
Maven依赖如下:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)