您的位置:首页 > 娱乐 > 明星 > Java高级重点知识点-20-File

Java高级重点知识点-20-File

2024/10/5 15:06:38 来源:https://blog.csdn.net/m0_72926194/article/details/140123607  浏览:    关键词:Java高级重点知识点-20-File

文章目录

    • File类

File类

java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

  1. 基本方法

构造方法:

  • public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
  • public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
  • public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
public class FileDemo {public static void main(String[] args) {// 构造方法File file1 = new File("D:\\file\\a.txt");File file2 = new File("D:\\", "file\\b.txt");File file3 = new File("D:\\");File file4 = new File(file3, "file\\c.txt");}
}

获取功能的方法:

  • public String getAbsolutePath() :返回此File的绝对路径名字符串。
  • public String getPath() :将此File转换为路径名字符串。
  • public String getName() :返回由此File表示的文件或目录的名称。
  • public long length() :返回由此File表示的文件的长度。
public class FileDemo {public static void main(String[] args) {// 构造方法File file1 = new File("file\\a.txt");File file2 = new File("D:\\", "file\\b.txt");File file3 = new File("D:\\");File file4 = new File(file3, "file\\c.txt");// 获取功能方法System.out.println("file1的绝对路径:" + file1.getAbsoluteFile());System.out.println("file2的路径名字字符串:" + file1.getPath());System.out.println("file4的文件或者目录名称:" + file4.getName());System.out.println("file4的文件长度:" + file4.length());}
}

在这里插入图片描述

判断功能的方法:

  • public boolean exists() :此File表示的文件或目录是否实际存在。
  • public boolean isDirectory() :此File表示的是否为目录。
  • public boolean isFile() :此File表示的是否为文件。
import java.io.File;public class FileDemo {public static void main(String[] args) {// 构造方法File file1 = new File("D:/file\\a.txt");File file2 = new File("D:\\", "file\\b.txt");File file3 = new File("D:\\");File file4 = new File(file3, "file\\c.txt");// 判断方法System.out.println("判断文件是否存在:" + file1.exists());System.out.println("判断文件是否为目录:" + file3.isDirectory());System.out.println("判断文件是否为文件:" + file1.isFile());}
}

在这里插入图片描述注意:
这里我们可以发现,我们创建了一个对象名为file1的对象,但是调用exists()方法的时候却为false。这是因为在 Java 中,通过 new File() 创建一个 File 对象并不会自动在文件夹中创建文件。File 类的主要作用是操作文件路径和文件属性,并不负责文件的创建。

创建删除功能的方法:

  • public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
  • public boolean delete() :删除由此File表示的文件或目录。
  • public boolean mkdir() :创建由此File表示的目录。
  • public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
import java.io.File;
import java.io.IOException;public class FileDemo {public static void main(String[] args) throws IOException {File file1 = new File("D:/file/a.txt");File file2 = new File("D:\\", "file");file2.mkdir();file1.createNewFile();System.out.println("判断文件是否存在:" + file1.exists());file1.delete();System.out.println("判断文件是否存在:" + file1.exists());File file3 = new File("D:\\");File file4 = new File(file3, "file1\\txt\\c");file4.mkdirs();}
}

当我们使用file对象创建一个文件夹时,我们的D盘下面会创建一个名为file的文件夹
在这里插入图片描述
通过file1.createNewFile(),我们创建了一个a.txt的文件,然后使用file1.exists()判断文件是否存在,果然为true;
在这里插入图片描述在这里插入图片描述
当我们调用file1.delete()方法时,文件a.txt被删除掉,同时我们调用file1.exists() 判断结果为false,同时我们可以发现文件a.txt被删除了。
在这里插入图片描述
最后我们调用了file4.mkdirs()创建多级目录,结果如图
在这里插入图片描述
目录的遍历:

  • public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
  • public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
import java.io.File;
import java.io.IOException;public class FileDemo {public static void main(String[] args) throws IOException {File file1 = new File("D:\\file1\\txt\\c");String[] list = file1.list();for (String s : list) {System.out.println(s);}File[] files = file1.listFiles();for (File file : files) {System.out.println(file);}}
}

在这里插入图片描述
递归多级目录
在D盘创建一个file1目录,在file1下面创建a.txt文件、b.txt文件、c.txt文件
在file1目录下面创建一个txt目录,在txt目录下面创建c目录,在c目录下面创建a.txt文件、b.txt文件、c.txt文件。

import java.io.File;
import java.io.IOException;public class FileDemo {public static void main(String[] args) throws IOException {File file = new File("D:\\file1");printFile(file);}public static void printFile(File file){File[] files = file.listFiles();for (File file1 : files) {if (file1.isDirectory()){System.out.println("目录:" + file1.getAbsolutePath());printFile(file1);}else {System.out.println("文件名:" + file1.getAbsolutePath());}}}
}

在这里插入图片描述
文件搜索
在file1目录创建一个d.java文件,在c目录下面创建一个d.java文件。

import java.io.File;
import java.io.IOException;public class FileDemo {public static void main(String[] args) throws IOException {File file = new File("D:\\file1");printFile(file);}public static void printFile(File file) {File[] files = file.listFiles();for (File file1 : files) {if (file1.isDirectory()) {System.out.println("目录:" + file1.getAbsolutePath());printFile(file1);} else {if (file1.getName().endsWith(".java")) {System.out.println("文件名:" + file1.getAbsolutePath());}}}}
}

在这里插入图片描述
文件过滤器优化
java.io.FileFilter 是一个接口,是File的过滤器。通过 **listFiles(FileFilter)**来过滤掉一些不符合规则的file。

import java.io.File;
import java.io.IOException;public class FileDemo {public static void main(String[] args) throws IOException {File file = new File("D:\\file1");printFile(file);}public static void printFile(File file) {/*  File[] files = file.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return pathname.getName().endsWith(".java") || pathname.isDirectory();}});*/File[] files = file.listFiles((pathname -> pathname.getName().endsWith(".java") || pathname.isDirectory()));for (File file1 : files) {if (file1.isDirectory()) {System.out.println("目录:" + file1.getAbsolutePath());printFile(file1);} else {System.out.println("文件名:" + file1.getAbsolutePath());}}}
}

在这里插入图片描述
这里通过匿名内部类的方式或者是Lambda表达式都可以完成文件过滤。

欢迎java热爱者了解文章,作者将会持续更新中,期待各位友友的关注和收藏。。。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com