赞
踩
Java基础之File类详解
创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。
Java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。
重点有三个单词需要记住:file(文件),directory(文件夹),path(路径)
构造方法摘要 |
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 |
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 |
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
- //File类的构造函数--练习
- private static void show02(){
- File file= new File("F:\\04Java\\19java","Hello.java");
- System.out.println(file);
- }
-
- private static void show01(){
- File f1= new File("F:\\04Java\\19java");
- System.out.println(f1);//重写了ToString()方法
-
- File f3= new File("b.txt");
- System.out.println(f3);
- }
- private static void show03(){
- File file=new File("F:\\04Java\\19ava");
- File newFile = new File(file,"Hello.java");
- System.out.println(newFile);
- }
方法摘要 | |
---|---|
String | getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。 |
String | getName() 返回由此抽象路径名表示的文件或目录的名称。 |
String | getPath() 将此抽象路径名转换为一个路径名字符串。 |
long | length() 返回由此抽象路径名表示的文件的长度。 |
- //获取文件绝对路径
- private static void show04() {
- File file=new File("F:\\04Java\\19java");
- File absoluteFile=file.getAbsoluteFile();//返回File对象的绝对路径
- System.out.println(absoluteFile);
- File file2=new File("a.txt");
- File absoluteFile2=file2.getAbsoluteFile();//返回File对象的绝对路径
- System.out.println(absoluteFile2);
- System.out.println("____________________________");
- }
- //file1.getName() 获取最后一个路径名
- private static void show02(){
- File file=new File("F:\\04Java\\19java");
- String name=file.getName();//最后的路径名
- System.out.println(name);
-
- File file1=new File("F:\\04Java\\19java\\小小张自由");
- String name1=file1.getName();//最后的路径名
- System.out.println(name1);
- }
- //file.getPath() 构造函数中传递什么值,就返回什么值
- private static void show01(){
- File file=new File("F:\\04Java\\19java");
- String path=file.getPath();//传递的参数是什么,返回值就是什么
- System.out.println(path);
- File file1=new File("b.txt");
- String path1=file1.getPath();
- System.out.println(path1);
- }
- //file.length() 获取文件的大小
- private static void show03(){
- File file=new File("F:\\迅雷下载\\AirtestIDE-win-1.2.6.zip");
- long length=file.length();//文件名的大小,路径错误则为0
- System.out.println(length);//单位字节
- }
方法摘要 | |
---|---|
boolean | exists() 测试此抽象路径名表示的文件或目录是否存在 |
boolean | isDirectory() 测试此抽象路径名表示的文件是否是一个目录。 |
boolean | isFile() 测试此抽象路径名表示的文件是否是一个标准文件。 |
- //用于判断构造函数中给定的路径是否为目录、文件
- public static void main(String[] args){
- File file = new File("F:\\04Java\\19java");
- System.out.println(file.exists());//判断文件名是否存在
- System.out.println(file.isDirectory());//判断是否以文件夹结尾
- System.out.println(file.isFile());//判断是否以文件结尾
- }
方法摘要 | |
---|---|
boolean | createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 |
boolean | delete() 删除此抽象路径名表示的文件或目录。 |
boolean | mkdir() 创建此抽象路径名指定的目录。 |
boolean | mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 |
- //File类中CreateNewFile()方法只能新建文件,创建成功true
- private static void show01()throws IOException{
- File file=new File("F:\\04Java\\19java\\99.txt");
- boolean newFile=file.createNewFile();//只能新建文件,创建成功true
- System.out.println(newFile);
- }
- //File类中Delete()方法
- private static void show03(){
- File file=new File("F:\\04Java\\19java\\HelloJava");
- boolean delete=file.delete();//可以删除文件夹只能是空文件夹
- System.out.println(delete);
-
- File file1=new File("F:\\04Java\\19java\\99.txt");
- boolean delete1=file1.delete();//可以删除文件
- System.out.println(delete1);
- }
- //File类中mkdir()和mkdirs()的方法创建单级、多级目录
- private static void show02(){
- File file=new File("F:\\04Java\\19java\\HelloJava");
- boolean mkdir=file.mkdir();//创建单级目录
- System.out.println(mkdir);
- File file1=new File("F:\\04Java\\19java\\Hello\\Java");
- boolean mkdirs=file1.mkdirs();//创建多级目录
- System.out.println(mkdirs);
- }
方法摘要 | |
---|---|
String[] | list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 |
File[] | listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 |
- //file.listFiles();方法返回值是一个File[]
- private static void show02(){
- File file=new File("F:\\04Java\\19java");
- File[]files=file.listFiles();
- for(File file1:files){
- System.out.println(file1);
- }
- }
-
- //file.list();方法返回值是一个String[]
- private static void show01(){
- File file=new File("F:\\04Java\\19java");
- String[] list=file.list();
- System.out.println(list);//地址值
- for(String i:list){
- System.out.println(i);
- }
- }
1. 搜索后缀名为.pdf的文件
2. 目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。
3. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。
- public class DiGuiDemo3 {
- public static void main(String[] args) {
- // 创建File对象
- File dir = new File("E:\\书籍");
- // 调用打印目录方法
- printDir(dir);
- }
- public static void printDir(File dir) {
- // 获取子文件和目录
- File[] files = dir.listFiles();
-
- // 循环打印
- for (File file : files) {
- if (file.isFile()) {
- // 是文件,判断文件名并输出文件绝对路径
- if (file.getName().endsWith(".PDF")) {
- System.out.println("文件名:" + file.getAbsolutePath());
- }
- }else{
- // 是目录,继续遍历,形成递归
- printDir(file);
- }
- }
- }
- }
使用FileFilter接口或者FilenameFilter接口,是File的过滤器。该接口方法的参数是FIle类的对象。接口中只有一个方法。
- //Sun公司封装的两个文件过滤的接口
- public interface FilenameFilter {
- boolean accept(File dir, String name);
- }
- public interface FileFilter {
- boolean accept(File pathname);
- }
下面任意一种方式都可以实现文件搜索的功能:方式一使用了 FileFilter接口,方式二使用了FilenameFilter接口。
以下三种玩法一个使用了接口的实现类,一个使用了Lambda表达式、一个使用了匿名内部类
- public static void main(String[] args) {
- File file=new File("E:\\书籍");
- //System.out.println(file);
- getAllFile(file);
- }
- //以下是三种玩法
- public static void getAllFile(File file) {
-
- //方式一、使用FIleFilter接口的实现类
- File[] files = file.listFiles(new Demo09FileFilterImpl());//实现了FIleFilter接口
- //方式1. 使用Lambda表达式
- File[] files = file.listFiles((pathname)->{
- return pathname.getName().toLowerCase().endsWith(".pdf");//
- });
-
- //方式二、使用FilenameFilter
- File[] files =file.listFiles(new FilenameFilter() {
- @Override //两个路径
- public boolean accept(File dir, String name) {
- return new File(dir,name).isDirectory()|| name.toLowerCase().endsWith("pdf");
- }
- });
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。