面对各式各样的格式,一个一个修改表示心力憔悴,便写了一个程序来实现作业文件的重命名。
首先得到目录下的所有文件名:
/*得到目录下的文件名*/
public static String [] getFileName(String path)
{
File file = new File(path);
String [] fileName = file.list();
return fileName;
}
/*
java.io.File.File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。如果给定的字符串是空字符串,则结果是空的抽象路径名。
参数:pathname A pathname string
抛出:NullPointerException - If the pathname argument is null
String[] java.io.File.list()
它返回一个字符串数组,包含路径目录中表示的文件和目录。如果路径名不表示目录,则它会返回null,否则就会返回一个字符串数组,包好路劲目录中的每个文件或目录。表示目录本身和目录的父目录的名称不包括在结果中。每个字符串都是一个文件名,而不是完整的路径。
*/
然后就是根据自己的需求改不规范的名称了:
String [] fileName = getFileName(path); //得到文件名数组
for(String name : fileName) //遍历文件名
{
String [] names = name.split("\\."); //将文件名与后缀分离
File oldfile = new File(path + "\\" + name);
File newfile ;
// System.out.println("文件名:"+names[0]);
// System.out.println("后缀:"+names[1]);
String newName;
if(names[0].indexOf(' ') != -1)//检测空格并替换
{
newName = names[0].replace(' ', '_');
System.out.println(" ");
System.out.println(name);
}
else if(names[0].indexOf('-') != -1)//检测断线并替换
{
newName = names[0].replace('-', '_');
System.out.println(" ");
System.out.println(name);
}
else
newName = names[0];
int tag = newName.lastIndexOf('_');//取最后一个“_”
String newname = newName.substring(0, ++tag)+"计算机1401班."+names[1];//设置新名称
System.out.println(newname);
newfile = new File(path + "\\" + newname);
oldfile.renameTo(newfile);//重命名
}
/*
boolean java.io.File.renameTo(File dest)
Renames the file denoted by this abstract pathname.
重命名由此抽象路径名表示的文件。
*/
好了,完整代码:
package com.rename;
import java.io.*;
public class Rename {
public static void main(String[] args) {
String path = "G:\\123";
String [] fileName = getFileName(path);
for(String name : fileName)//遍历文件名
{
String [] names = name.split("\\."); //将文件名与后缀分离
File oldfile = new File(path + "\\" + name);
File newfile ;
//System.out.println("文件名:"+names[0]);
//System.out.println("后缀:"+names[1]);
String newName;
if(names[0].indexOf(' ') != -1)//检测空格并替换
{
newName = names[0].replace(' ', '_');
System.out.println(" ");
System.out.println(name);
}
else if(names[0].indexOf('-') != -1)//检测断线并替换
{
newName = names[0].replace('-', '_');
System.out.println(" ");
System.out.println(name);
}
else
newName = names[0];
int tag = newName.lastIndexOf('_');//取最后一个“_”
String newname = newName.substring(0, ++tag)+"计算机1401班."+names[1];//设置新名称
System.out.println(newname);
newfile = new File(path + "\\" + newname);
if(oldfile.renameTo(newfile) == true) //重命名
{
System.out.println("OK");
}
else
System.out.println("Error");
}
}
/*得到目录下的文件名*/
public static String [] getFileName(String path)
{
File file = new File(path);
String [] fileName = file.list();
return fileName;
}
}
结果就是这样的: