当前位置:   article > 正文

Java基础之File类详解_absolutefile

absolutefile
 

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 实例。

  1. //File类的构造函数--练习
  2. private static void show02(){
  3. File file= new File("F:\\04Java\\19java","Hello.java");
  4. System.out.println(file);
  5. }
  6. private static void show01(){
  7. File f1= new File("F:\\04Java\\19java");
  8. System.out.println(f1);//重写了ToString()方法
  9. File f3= new File("b.txt");
  10. System.out.println(f3);
  11. }
  12. private static void show03(){
  13. File file=new File("F:\\04Java\\19ava");
  14. File newFile = new File(file,"Hello.java");
  15. System.out.println(newFile);
  16. }

主要成员方法

获取的方法 

方法摘要
 StringgetAbsolutePath()
          返回此抽象路径名的绝对路径名字符串。
 StringgetName()
          返回由此抽象路径名表示的文件或目录的名称。
 StringgetPath()
          将此抽象路径名转换为一个路径名字符串。
 longlength()
          返回由此抽象路径名表示的文件的长度。
  1. //获取文件绝对路径
  2. private static void show04() {
  3. File file=new File("F:\\04Java\\19java");
  4. File absoluteFile=file.getAbsoluteFile();//返回File对象的绝对路径
  5. System.out.println(absoluteFile);
  6. File file2=new File("a.txt");
  7. File absoluteFile2=file2.getAbsoluteFile();//返回File对象的绝对路径
  8. System.out.println(absoluteFile2);
  9. System.out.println("____________________________");
  10. }
  11. //file1.getName() 获取最后一个路径名
  12. private static void show02(){
  13. File file=new File("F:\\04Java\\19java");
  14. String name=file.getName();//最后的路径名
  15. System.out.println(name);
  16. File file1=new File("F:\\04Java\\19java\\小小张自由");
  17. String name1=file1.getName();//最后的路径名
  18. System.out.println(name1);
  19. }
  20. //file.getPath() 构造函数中传递什么值,就返回什么值
  21. private static void show01(){
  22. File file=new File("F:\\04Java\\19java");
  23. String path=file.getPath();//传递的参数是什么,返回值就是什么
  24. System.out.println(path);
  25. File file1=new File("b.txt");
  26. String path1=file1.getPath();
  27. System.out.println(path1);
  28. }
  29. //file.length() 获取文件的大小
  30. private static void show03(){
  31. File file=new File("F:\\迅雷下载\\AirtestIDE-win-1.2.6.zip");
  32. long length=file.length();//文件名的大小,路径错误则为0
  33. System.out.println(length);//单位字节
  34. }

判断的方法

方法摘要
 booleanexists()
          测试此抽象路径名表示的文件或目录是否存在
 booleanisDirectory()
          测试此抽象路径名表示的文件是否是一个目录。
 booleanisFile()
          测试此抽象路径名表示的文件是否是一个标准文件。
  1. //用于判断构造函数中给定的路径是否为目录、文件
  2. public static void main(String[] args){
  3. File file = new File("F:\\04Java\\19java");
  4. System.out.println(file.exists());//判断文件名是否存在
  5. System.out.println(file.isDirectory());//判断是否以文件夹结尾
  6. System.out.println(file.isFile());//判断是否以文件结尾
  7. }

创建删除的方法

方法摘要
 booleancreateNewFile()
          当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
 booleandelete()
          删除此抽象路径名表示的文件或目录。
 booleanmkdir()
          创建此抽象路径名指定的目录。
 booleanmkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
  1. //File类中CreateNewFile()方法只能新建文件,创建成功true
  2. private static void show01()throws IOException{
  3. File file=new File("F:\\04Java\\19java\\99.txt");
  4. boolean newFile=file.createNewFile();//只能新建文件,创建成功true
  5. System.out.println(newFile);
  6. }
  7. //File类中Delete()方法
  8. private static void show03(){
  9. File file=new File("F:\\04Java\\19java\\HelloJava");
  10. boolean delete=file.delete();//可以删除文件夹只能是空文件夹
  11. System.out.println(delete);
  12. File file1=new File("F:\\04Java\\19java\\99.txt");
  13. boolean delete1=file1.delete();//可以删除文件
  14. System.out.println(delete1);
  15. }
  16. //File类中mkdir()和mkdirs()的方法创建单级、多级目录
  17. private static void show02(){
  18. File file=new File("F:\\04Java\\19java\\HelloJava");
  19. boolean mkdir=file.mkdir();//创建单级目录
  20. System.out.println(mkdir);
  21. File file1=new File("F:\\04Java\\19java\\Hello\\Java");
  22. boolean mkdirs=file1.mkdirs();//创建多级目录
  23. System.out.println(mkdirs);
  24. }

 目录的遍历

方法摘要
 String[]list()
          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
 File[]listFiles()
          返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
  1. //file.listFiles();方法返回值是一个File[]
  2. private static void show02(){
  3. File file=new File("F:\\04Java\\19java");
  4. File[]files=file.listFiles();
  5. for(File file1:files){
  6. System.out.println(file1);
  7. }
  8. }
  9. //file.list();方法返回值是一个String[]
  10. private static void show01(){
  11. File file=new File("F:\\04Java\\19java");
  12. String[] list=file.list();
  13. System.out.println(list);//地址值
  14. for(String i:list){
  15. System.out.println(i);
  16. }
  17. }

案例-文件搜索

     1. 搜索后缀名为.pdf的文件

     2. 目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。

     3. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。

  1. public class DiGuiDemo3 {
  2. public static void main(String[] args) {
  3. // 创建File对象
  4. File dir = new File("E:\\书籍");
  5. // 调用打印目录方法
  6. printDir(dir);
  7. }
  8. public static void printDir(File dir) {
  9. // 获取子文件和目录
  10. File[] files = dir.listFiles();
  11. // 循环打印
  12. for (File file : files) {
  13. if (file.isFile()) {
  14. // 是文件,判断文件名并输出文件绝对路径
  15. if (file.getName().endsWith(".PDF")) {
  16. System.out.println("文件名:" + file.getAbsolutePath());
  17. }
  18. }else{
  19. // 是目录,继续遍历,形成递归
  20. printDir(file);
  21. }
  22. }
  23. }
  24. }

案例-文件搜索(高级玩法)

  使用FileFilter接口或者FilenameFilter接口,是File的过滤器。该接口方法的参数是FIle类的对象。接口中只有一个方法。

  1. //Sun公司封装的两个文件过滤的接口
  2. public interface FilenameFilter {
  3. boolean accept(File dir, String name);
  4. }
  5. public interface FileFilter {
  6. boolean accept(File pathname);
  7. }

下面任意一种方式都可以实现文件搜索的功能:方式一使用了 FileFilter接口,方式二使用了FilenameFilter接口。

以下三种玩法一个使用了接口的实现类,一个使用了Lambda表达式、一个使用了匿名内部类

  1. public static void main(String[] args) {
  2. File file=new File("E:\\书籍");
  3. //System.out.println(file);
  4. getAllFile(file);
  5. }
  6. //以下是三种玩法
  7. public static void getAllFile(File file) {
  8. //方式一、使用FIleFilter接口的实现类
  9. File[] files = file.listFiles(new Demo09FileFilterImpl());//实现了FIleFilter接口
  10. //方式1. 使用Lambda表达式
  11. File[] files = file.listFiles((pathname)->{
  12. return pathname.getName().toLowerCase().endsWith(".pdf");//
  13. });
  14. //方式二、使用FilenameFilter
  15. File[] files =file.listFiles(new FilenameFilter() {
  16. @Override //两个路径
  17. public boolean accept(File dir, String name) {
  18. return new File(dir,name).isDirectory()|| name.toLowerCase().endsWith("pdf");
  19. }
  20. });
  21. }

创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/488742
推荐阅读
相关标签
  

闽ICP备14008679号