Java File文件类以抽象的方式代表文件名和目录路径名。Java File类的功能非常强大,利用java基本上可以对文件进行所有操作。本文将对File文件类中的常用方法进行相应总结。
首先我们要对File类有以下概念:
- File类是文件和目录路径名的抽象表示形式;
- Java中把文件或者目录(文件夹)都封装成File对象;
- 我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。
构造函数
//构造函数File(String pathname)
File f = new File("F:\\test\\a.txt");
//构造函数File(String parent,String child)
File f = new File("F:\\test","a.txt")
//构造函数File(File parent,String child)
File f1 = new File("F:"+File.separator+"test");
File f2 = new File(f1,"a.txt");
判断函数
- public boolean isFile() :测试此抽象路径名表示的文件是否是一个标准文件;
- public boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。;
- public boolean exists():测试此抽象路径名表示的文件或目录是否存在。
创建函数
- public boolean createNewFile() :返回一个Boolean值,如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false;
- public boolean mkdir():创建此抽象路径名指定的目录,如果新建的文件目录的上级目录不存在则回报异常且不能成功创建文件夹;
- public boolean mkdirs():创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("F:\\test\\file.txt");
File directory = new File("F:\\test\\test1");
File dir = new File("F:\\test\\test2\\test22");
if(!directory.exists()){
System.out.println(directory.mkdir());
}
if(!dir.exists()){
System.out.println(dir.mkdirs());
}
if(!file.exists()){
System.out.println(file.createNewFile());
}
}
}
获取文件属性函数
- public String getName():返回由此抽象路径名表示的文件或目录的名称;
- public String getParent():返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null;
- public String getPath():将此抽象路径名转换为一个路径名字符串;
- public String getAbsolutePath():返回抽象路径名的绝对路径名字符串;
- public String[] list():返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组;
- public File[] listFiles():返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("F:\\test\\file.txt");
System.out.println("getName: " + file.getName());
System.out.println("getParent: " + file.getParent());
System.out.println("getPath: " + file.getPath());
System.out.println("getAbsolutePath: " + file.getAbsolutePath());
}
}
输出结果为:
getName: file.txt
getParent: F:\test
getPath: F:\test\file.txt
getAbsolutePath: F:\test\file.txt
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("F:\\test");
String[] stringArr = file.list();
for(String s : stringArr){
System.out.println(s);
}
}
}
输出结果为:
a.txt
file.txt
test1
test2
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("F:\\test");
File[] fileArr = file.listFiles();
for(File f : fileArr){
System.out.println(f);
}
}
}
输出结果为:
F:\test\a.txt
F:\test\file.txt
F:\test\test1
F:\test\test2
输出为文件或文件夹的全路径。
综合案例:遍历目录下的所有txt文件(过滤器+递归)
list()和listFiles()方法均可以通过添加过滤器来对文件进行筛选。
public class Test {
public static void main(String[] args) throws IOException {
getAllJava(new File("f:\\test"));
}
public static void getAllJava(File dir){
//调用File对象方法listFiles()获取,加入过滤器
File[] fileArr = dir.listFiles(new FileFilter(){
@Override
public boolean accept(File pathname) {
// TODO Auto-generated method stub
if(pathname.isDirectory())
return true;
return pathname.getName().toLowerCase().endsWith("txt");
}
});
for(File f : fileArr){
if(f.isDirectory()){
getAllJava(f);
}else{
System.out.println(f);
}
}
}
}