首先我上几个方法大家先看一看。
(1)list方法
注意了!!!
list()方法返回的是目录中文件的名字,返回类型是String。而listfiles()方法返回的是目录中的文件对象。list和filelist有参的构造方法则是为了过滤。
(2)接口 FileFilter
再次注意了!!!
filefilter接口的accept方法传的参数仅仅是这个目录或者文件的绝对路径,这个accept方法的作用是什么呢?举一个例子。如果我们要找到当前目录中隐藏的文件,那么就最好用这个方法。直接return pathname.ishide()==true;
(3) 接口 FilenameFilter
注意注意!!!
FilenameFilter接口的accept方法和Filefilter接口accept方法这两个的参数是不一样的,FilenameFilter的accept方法多了个String name参数,这是为什么呢?原因就是我们假设要找文件名中含有以什么开头以什么结尾的文件,就用这个。举个例子:return name.endsWith(".java")&&name.startsWith(“IO”);它的含义就是。。。应该看的懂吧!
总结:
找文件名用什么?我们用List方法,
找文件对象我们用什么?用listfile方法。
过滤隐藏的文件我们FileFilter接口的accept方法,反之用FilenameFilter接口。
进入正题:如何用File类批量修改文件名?
这是修改前的文件,如下图
批量修改文件名,也就是批量重命名。
将IODemo-04.java 改为 test-04.python
看代码实现:
package 测试;
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
/*
* 批量修改文件名,也就是批量重命名。
* IODemo-04.java 改为 test-04.python
*
*/
public class Test4 {
public static void main(String[] args) {
File dir=new File("D:\\Users\\xulihao\\Desktop\\t");
File[] oldfile=dir.listFiles(new FilenameFilter() {
//接口中的方法就用那么几次,推荐用匿名内部类。
//得到当前文件的路径和名字
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.endsWith(".java")&&name.startsWith("IO");
}
});
for(File f:oldfile) {
/*
* 在这里依次建立符合要求的新数组,
* 但是在建立新数组之前,首先要得到新数组的绝对路径和要修改的名字。
*/
String newname=change(f.getParent(),f.getName());//将路径和名字传入
File newfile=new File(newname);//建立新数组。
f.renameTo(newfile);//开始修改
}
}
private static String change(String parent, String name) {
// TODO Auto-generated method stub
//IODemo-04.java test-04.python
String[] temp=name.split("-");
temp[0]=temp[0].replaceAll("IODemo","test" );
temp[1]=temp[1].replaceAll("java", "python");
String newname=temp[0]+"-"+temp[1];
return parent+"\\"+newname;//返回路径和新数组的名字
}
}
看一下修改是怎样的:如下图
如何找到隐藏文件夹的路径???
接下来我再说一下,filefilter接口怎么用。举个例子:找到隐藏的文件夹。
首先我建立两个文件,然后隐藏。看下图。
然后我隐藏掉。
隐藏后看下图:
看代码如何实现:
package 测试;
//找到隐藏的文件
import java.io.File;
import java.io.FileFilter;
public class Test5 {
public static void main(String[] args) {
File dir = new File("D:\\Users\\xulihao\\Desktop\\t");
File[] oldfile = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File dir) {
// TODO Auto-generated method stub
return dir.isHidden();
}
});
for (File f : oldfile) {
System.out.println(f);
}
}
}