File
File:代表磁盘里面存在或者不存在的目录/文件,在java.IO*包里面
常用构造:
File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的 File实例。
File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例
当file作为文件:
- 创建文件对象给的路径文件不存在的时候:
//创建文件对象:
//1、当创建的文件不存在的时候:
String filePath="1129\\src\\filedemo\\FileDemo1.java";
File file=new File(filePath);
System.out.println(file.getPath());
//获得相对路径:1129\src\filedemo\FileDemo1.java
System.out.println(file.getAbsolutePath());
//获得绝对路径:E:\preview\JavaSE\1129\src\filedemo\FileDemo1.java
System.out.println(file.canExecute());//是否可执行:false
System.out.println(file.canRead());//是否可读:false
System.out.println(file.exists());//判断文件是否存在:false
System.out.println(file.getName());//得到文件名和后缀:FileDemo1.java
System.out.println(file.isFile());//判断文件是否是一个文件:false
System.out.println(file.lastModified());//获取最新操作文件时间:毫秒
System.out.println(file.length());//0
System.out.println(File.pathSeparator);// ;
System.out.println(File.pathSeparatorChar);// ;
System.out.println(File.separator);// \
System.out.println(File.separatorChar);// \
- 创建文件路径存在的时候
String filePath="1129\\src\\filedemo\\FileDemo.java";
File file=new File(filePath);
System.out.println(file.getPath());
//获得相对路径:1129\src\filedemo\FileDemo.java
System.out.println(file.getAbsolutePath());
//获得绝对路径:E:\preview\JavaSE\1129\src\filedemo\FileDemo.java
System.out.println(file.canExecute());//是否可执行:true
System.out.println(file.canRead());//是否可读:true
System.out.println(file.exists());//判断文件是否存在:true
System.out.println(file.getName());//得到文件名和后缀:FileDemo.java
System.out.println(file.isFile());//判断文件是否是一个文件:true
System.out.println(file.lastModified());//1669819935506(最新操作日期的毫秒数)
System.out.println(file.length());//2574
当file作为目录:
String dir="src\\filedemo1";
File directory=new File(dir);
System.out.println(directory.getPath());
//获得相对路径:src\filedemo1
System.out.println(directory.getAbsolutePath());
//获得绝对路径:E:\preview\JavaSE\src\filedemo1
System.out.println(directory.canExecute());//是否可执行:false
System.out.println(directory.canRead());//是否可读:false
System.out.println(directory.exists());//判断目录是否存在:false
System.out.println(directory.getName());//得到目录名:filedemo1
System.out.println(directory.isFile());//判断文件是否是一个文件
System.out.println(directory.lastModified());//0(最新操作日期的毫秒数)
System.out.println(directory.length());//0
System.out.println(directory.isDirectory());//判断是否是一个目录
File[] files = dir.listFiles();//查看一级子目录下的所有文件和目录
例题:将给定目录下的文件全部展示:
//因为多次调用,所以可以用递归的方法来进行查找
private static void findChild(File file) {
if(!file.exists()){
System.out.println("目录不存在!");
}
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isDirectory()) {
System.out.println(file1);
findChild(file1);
}
else if(file1.isFile()) {//不是目录就是文件
System.out.println(file1);
}
}
}
private static void demo4() {
String path = "1129\\src";
File dir = new File(path);
findChild(dir);//查找到src下面的所有文件
}
将输出的文件夹一层层展示:
private static void findChild1(File file,String s) {
if(!file.exists()){
System.out.println("文件不存在!");
}
File[] files = file.listFiles();
for (File file1 : files) {
System.out.println(s+file1.getName());
if (file1.isDirectory()) {
findChild1(file1,"| "+s);
}
}
}
输出内容:
|-com
| |-liku
| | |-demo1.java
| | |-study
| | | |-demo1.java
|-exercise.java
|-filedemo
| |-FileDemo.java
|-Student.java
文件资源过滤:
File file=new File("1129");
file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith("java");
}
});
例题:筛选文件后缀为java的文件:
public static void main(String[] args) {
filter(new File("CollectionDemo"),"java");
}
private static void filter(File file,String s) {
File[] file1 =file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory())return true;//是目录的直接不过滤
return pathname.getName().endsWith(s);
}
});
for (File file2 : file1) {
if(file2.isDirectory())filter(file2,s);
else System.out.println(file2.getName());
}
}