感觉最近有点自卑,不行以后写文章的时候要给自己打鸡血,现在就来一句:「生命之灯因热情而点燃,生命之舟因拼搏而前行」。
上课的时候,老师展示了他那用 matlab 语言解决了学生交实验的文件名命名不规范的问题,其实老师先前让学习委员收,是想让他弄这件事情的,但是学习委员不过醒目,然后老师就自己靠本事吃饭咯。
心血来潮,想着自己能不能也通过 java 语言写一个出来,感觉也高估了自己的能力,自己的编程水平还是有待提高的,以前敲过的代码也仅仅是敲过而已。
问题:解决学生上交文件命名不规范
思路:先读取文件夹里面的内容,然后读取学生的信息,根据学生的姓名匹配原来文件夹里面的文件,最后就是修改啦。
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
static properts[] ps1;
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
information(); //录入学生的信息:学号和姓名
change(ps1); //根据录入的信息修改源文件的名字
}
/*
* 使用对象数组存取学生的信息:学号和姓名
* 其中的错误: 创建多个对象时 properts[] ps1 = {new properts(),new properts(),new properts(),new properts()}
*/
public static void information() {
System.out.println("请输入要修改的学生文件的数量:");
int num = sc.nextInt();
ps1 = new properts[num];
System.out.println("请输入学生的学号和姓名:");
for(int i = 0;i < ps1.length;i++) {
ps1[i] = new properts(sc.next(),sc.next());
}
}
/*
* 修改文件的名称
* 首先用File oldFile =new File("文件路径");读取文件存取的目录
* 然后oldFile.listFiles()读取文件夹里面的文件到fs里面
* 然后使用字符串的方法:indexOf()获取"."下标,用substring()获取"."前面的文件名
* 最后根据文件名是否匹配修改整个文件名
* 修改文件名的方法: 将新命名的名称赋值给newName,然后新建文件的路径,最后使用renameTo()方法
*/
public static void change(properts[] ps1) {
File oldFile = new File("d:\\测试文件夹");
File[] fs = oldFile.listFiles();
for(int j = 0;j < ps1.length;j++) {
for(int i = 0;i < fs.length;i++) {
String name = fs[i].getName();
int index = name.indexOf(".");
int index2 = name.lastIndexOf(".");
String name1 = name.substring(0,index);
if(name1.contains(ps1[j].name)) { //文件名称匹配成功,修改名称
String name3 = name.substring(index);
String newName = "实验一" + ps1[j].id +"-" + ps1[j].name+ name3;
File dest = new File("d://测试文件夹"+"/" + newName);
fs[i].renameTo(dest);
System.out.println(fs[i].getName());
}
}
}
}
}