目录
File 类的基本用法
File 类的常见构造方法:public File(String pathname)
通过 File 对象可以访问文件的属性
通过 File 对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)
递归遍历目录结构和树状展现
File 类的基本用法
java.io.File 类:代表文件和目录。 在开发中,读取文件、生成文件、删除文件、修改 文件的属性时经常会用到本类。
File 类的常见构造方法:public File(String pathname)
以 pathname 为路径创建 File 对象,如果 pathname 是相对路径,则默认的当前路径在系 统属性 user.dir 中存储
import java.io.File;public class TestFile1 {public static void main(String[ ] args) throws Exception {System.out.println(System.getProperty("user.dir"));File f = new File("testaaa.txt"); //相对路径:默认放到 user.dir 目录下面f.createNewFile();//创建文件File f2 = new File("d:/testbbb.txt");//绝对路径f2.createNewFile();}
}
执行完毕后,在本项目和 D盘下都生成了新的文件
通过 File 对象可以访问文件的属性
方法 | 说明 |
public boolean exists() | 判断 File 是否存在 |
public boolean isDirectory() | 判断 File 是否是目录 |
public boolean isFile() | 判断 File 是否是文件 |
public long lastModified() | 返回 File 最后修改时间 |
public long length() | 返回 File 大小 |
public String getName() | 返回文件名 |
public String getPath() | 返回文件的目录路径 |
使用 File 类访问文件或目录属性
import java.io.File;
import java.util.Date;public class TestFile2 {public static void main(String[ ] args) throws Exception {File f = new File("d:/b.txt");System.out.println("File 是否存在:"+f.exists());System.out.println("File 是否是目录:"+f.isDirectory());System.out.println("File 是否是文件:"+f.isFile());System.out.println("File 最后修改时间:"+new Date(f.lastModified()));System.out.println("File 的大小:"+f.length());System.out.println("File 的文件名:"+f.getName());System.out.println("File 的目录路径:"+f.getPath());}
}
通过 File 对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)
方法 | 说明 |
createNewFile() | 创建新的 File |
delete() | 删除 File 对应的文件 |
mkdir() | 创建一个目录;中间某个目录缺失,则创建失败 |
mkdirs() | 创建多个目录;中间某个目录缺失,则创建该缺失目录 |
使用 mkdir 创建目录
import java.io.File;public class TestFile3 {public static void main(String[ ] args) throws Exception {File f = new File("d:/c.txt");f.createNewFile(); // 会在 d 盘下面生成 c.txt 文件f.delete(); // 将该文件或目录从硬盘上删除File f2 = new File("d:/电影/华语/大陆");boolean flag = f2.mkdir(); //目录结构中有一个不存在,则不会创建整个目录树System.out.println(flag);//创建失败}
}
使用 mkdirs 创建目录
import java.io.File;public class TestFile4 {public static void main(String[ ] args) throws Exception {File f = new File("d:/c.txt");f.createNewFile(); // 会在 d 盘下面生成 c.txt 文件f.delete(); // 将该文件或目录从硬盘上删除File f2 = new File("d:/电影/华语/大陆");boolean flag = f2.mkdirs();//目录结构中有一个不存在也没关系;创建整个目录树System.out.println(flag);//创建成功}
}
File 类的综合应用
import java.io.File;
import java.io.IOException;public class TestFile5 {public static void main(String[] args) {//指定一个文件File file = new File("d:/test/aaa.txt");//判断该文件是否存在boolean flag= file.exists();//如果存在就删除,如果不存在就创建if(flag) {//删除boolean flagd = file.delete();if(flagd){System.out.println("删除成功");}else{System.out.println("删除失败");}} else {//创建boolean flagn = true;try {//如果目录不存在,先创建目录File dir = file.getParentFile();dir.mkdirs();//创建文件flagn = file.createNewFile();System.out.println("创建成功");} catch (IOException e) {System.out.println("创建失败");e.printStackTrace();}}}
}
递归遍历目录结构和树状展现
import java.io.File;public class TestFile6 {public static void main(String[ ] args) {File f = new File("d:/myMovie");printFile(f, 0);}/*** 打印文件信息* @param file 文件名称* @param level 层次数(实际就是:第几次递归调用)*/static void printFile(File file, int level) {//输出层次数for (int i = 0; i < level; i++) {System.out.print("-");}//输出文件名System.out.println(file.getName());//如果 file 是目录,则获取子文件列表,并对每个子文件进行相同的操作if (file.isDirectory()) {File[ ] files = file.listFiles();for (File temp : files) {//递归调用该方法:注意等+1printFile(temp, level + 1);}}}
}