File类的正确学习方式(一)-文件查找

【云原生技术】云计算与网络:容器服务(Tencent Kubernetes Engine,简称TKE)简介 基本概念主要特点应用场景技术实现容器服务(Tencent Kubernetes Engine,简称TKE)是腾讯云提供的一种托管的容器管理服务,基于开源的Kubernetes系统。TKE旨在简化容器的部署、管理和扩展,并且提供高性能、可靠性和安全性,适用于各种规模的企业和应用。 阅读详情

关键字:File类的创建、删除;获取文件名、路径、大小;目录遍历、文件查找

一、File类入门

1.概念

2.提供的静态方法(了解)

  • C:\develop\a.txt windows 反斜杠
  • User/develop/a.txt linux 正斜杆
    类名.静态成员
static String pathSeparator与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
static char pathSeparatorChar与系统有关的路径分隔符。
static String separator与系统有关的默认名称分隔符,为了方便,它被表示为一个字符
static char separatorChar与系统有关的默认名称分隔符。
package file;
import java.io.File;
/**
 * File的静态成员变量
 * 功能:关于文件路径和文件名称的分隔符使用
 */
public class Demo01File {
    /**
     * 注意:操作路径不能写死了
     * C:\develop\a.txt     windows  反斜杠
     * User/develop/a.txt   linux 正斜杆
     * 正确写法:"C:" + File.separator + "develop" +File.separator+ "a.txt" ;
     */
    public static void main(String[] args) {
        String pathSeparator = File.pathSeparator;    //路径分隔符  win是 分号;
        System.out.println(pathSeparator);          // linux 为 冒号:

        String separator = File.separator;          //文件名称分隔符   win:反斜杠 \
        System.out.println(separator);              //linux :正斜杠 /
    }
}

3.构造方法

4 中创建 File 对象的方法;

  • File(String pathname);
  • File(String parent,String child);
  • File(File parent , String child);
  • File(URI uri);
public class Demo02FileStructure {

    public static void main(String[] args) {
        String pathname = "/Users/IdeaProjects/JavaDemo/a.txt";   //传递文件夹、或者文件全称
        File file = new File(pathname);
        System.out.println(file);

        File a = new File("a.txt");   //  传递文件名!!!不要带斜杆
        System.out.println(a);
    }
}

4.常用的三大方法(重点)

一、获取功能

  •   获取绝对路径:file.getAbsolutePath()
    
  •   获取路径:file.getPath() 构造函数中的路径值
    
  •   获取文件名:file.getName()
    
  •   获取文件大小:file.length() 单位:字节
    

二、判断功能:

  •   file 文件/夹是否存在:file.exists()
    
  •   构造函数路径是尾部是文件吗:file.isFile()
    
  •   file.isDirectory()
    

三、创建、删除功能

  •   创建新文件:file.createNewFile()
    
  •   创建单级目录:file.mkdir()
    
  •   创建多级目录:file.mkdirs()  一般使用这个,兼容单级。
    
  •   删除文件/空文件夹:file.delete()   直接从磁盘删除,不走回收站
    
package file;
import java.io.File;
import java.io.IOException;

/*
* File 三大类常用的方法:File file = new File("文件名/文件夹"
* time:2020-05-07
* */

public class Demo03FileMethod {

    public static void main(String[] args) throws IOException {
        //获取文件:路径、名称、大小的4种方法
        //show1();

        //判断的方法:File是否存在、是否为文件或者目录
        //show2();

        //创建、删除:文件、目录功能
         show3();
    }

    /*
     * 种类3:创建和删除功能
     * */
    private static void show3() throws IOException {
        //此file只是文件或者路径的 抽象表现形式,此时是不存在的。
        File file = new File("/Users/IdeaProjects/JavaDemo/b.txt");

        //1.  createNewFile():
        // 创建文件
        boolean newFile = file.createNewFile();  //抛出异常
        System.out.println("绝对路径文件创建:" + newFile);
        boolean c = new File("c.txt").createNewFile();    // 注意此时,只需要传递文件名即可。不用加斜杠
        System.out.println("相对路径文件创建:"+ c);

        //2.创建文件夹:
        // mkdir() 创建单级文件夹
        // mkdird() 创建多级文件夹
        File f1 = new File("/Users/IdeaProjects/JavaDemo/新建文件夹");
        System.out.println(f1.mkdir());
        boolean mkdirs = new File("/Users/IdeaProjects/JavaDemo/新建文件夹/aaa/bbb").mkdirs();
        System.out.println(mkdirs);

        //3. file.delete()
        // 删除空文件夹,或者文件
        File f2 = new File("/Users/IdeaProjects/JavaDemo/新建文件夹/ccc");
        System.out.println("删除新建文件夹下的CCC文件夹:"+f2.delete());
        //删除已存在的文件
        File d = new File("c.txt");
        System.out.println("删除d.txt:"+d.delete());
	}

    /*
     * 种类2:判断功能的方法
     * */
    private static void show2() {
        File file = new File("/Users/IdeaProjects/JavaDemo/a.txt");

        //1.  exists()
        boolean b = file.exists();
        System.out.println("文件或者目录是否真实存在:" + b);

        //2. isFile()
        boolean isfile = file.isFile();   //判断此 File是否为文件,即 new File()中传递的路径 结尾是否是文件名
        System.out.println(isfile);

        //3.isDirectory
        System.out.println(file.isDirectory());   //判断是此File是否为文件夹,即判断构造方法中给定的路径,结尾处是否是文件夹
    }

    /*
    * 种类1:获取方法
    * */
    private static void show1() {
        //创建文件或目录抽象对象,重写了toString方法
        File file = new File("/Users/IdeaProjects/JavaDemo/a.txt");
        System.out.println(file);  //toString()方法,调用的就是getPath()方法

        //1.getAbsolutePath() 获取绝对路径:
        System.out.println(file.getAbsolutePath());//   /Users/IdeaProjects/JavaDemo/a.txt

        //2.getPath() :获取路径
        System.out.println(file.getPath());  //  和new File()时传递的路径有关系

        //3.getName() :获取的是构造方法传递路径的结尾部分,即最后一级文件夹或者文件名
        String name = file.getName();
        System.out.println(name);    //JavaDemo或者a.txt

        //4. length() :获取文件大小(单位:字节)
        long length = file.length();  //588 byte
        System.out.println(length);   //无法获取 文件夹(文件夹没有大小之分) 以及 不存在的的文件的大小

    }
}

二、遍历目录、递归、文件查找

1.遍历目录

File类提供的遍历下一级目录Directory的方法:

  • (1)public String[]list(); 返回String数组,表示File目录中的下一级的所有文件和目录名
  • (2) public File[] listFiles(); 返回File数组,表示File下级目录中的所有文件和文件夹的 new File() 抽象对象表示形式
public class Demo04FileDirectoryEach {
    public static void main(String[] args) throws IOException {

        //创建文件和文件夹
        new File("/Users/IdeaProjects/JavaDemo/test/ccc/ddd").mkdirs();
        new File("/Users/IdeaProjects/JavaDemo/test/ccc/eee").mkdirs();
        new File("/Users/IdeaProjects/JavaDemo/test/ccc/a.txt").createNewFile();

        //遍历目录1:  file.list()
        File file = new File("/Users/IdeaProjects/JavaDemo/test/ccc");
        String[] list = file.list();
        for (String s : list) {
            System.out.println(s);
                //打印目录下子内容名称
        }

        //遍历目录2:  file.listFiles()
        File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.println(file1);
                    /* 打印该目录下的子内容,以File的重写的toString()
        }
    }
}

想要遍历某文件夹下的各级子内容,得使用递归思想+上述方法!

3.递归思想

递归思想:递归计算 n+…+1 之和

  • 1.中止条件
  • 2.递归目的:获取下一个数字
public class Demo01Recurison {
    public static void main(String[] args) {

        int sum = sum(100);
        System.out.println(sum);
    }

    private static int sum(int n) {
        //System.out.println(n);
        if (n == 1)
            return 1;  //1.中止条件

        //2.递归的目的:获取下一个被加的  数字(n-1)
        return  n + sum(n-1);
    }
}

3.利用递归对文件遍历和搜索🔍

  • 功能:搜索本项目下的所有 .java文件:递归和字符串尾缀匹配的方法来找 .java 文件
public class Demo02DirectoryRecurison {
    //递归打印 多级目录
    //同时也可以递归搜索 特定文件
    public static void main(String[] args) {
        File dir = new File("/Users/IdeaProjects/JavaDemo");
        getAllFiles(dir);
    }

    private static void getAllFiles(File dir) {
       // System.out.println(dir);       //打印所有文件夹
        File[] files = dir.listFiles();   //用到listFiles()方法,查看下一级内容
        for (File f : files) {
            if (f.isDirectory()){       //判断是否为文件夹,是则递归查看
                getAllFiles(f);
            }else {
                //System.out.println(f);    //打印所有文件名
             /*
                //法一:搜索 .java结尾的文件
                String name = f.getName();
                int i = name.lastIndexOf(".");
                String substring = name.substring(i + 1);
                if (substring.equals("java")){
                    System.out.println(f);
                }*/

                //法二:搜索  .java文件
                // 还有  name.endsWith(".java")  方法来判断尾缀。
                if (f.getName().toLowerCase().endsWith(".java")){
                    System.out.println(f);  //兼容大小写,
                }
            }
        }

    }
}

4.优化文件搜索🔍

  • 优化1:上面的 dir.listFiles() 将文件夹下的所有内容均存储到了 File[] 数组中,造成了栈空间的浪费。 这里采用File类中listFiles()的两种重载方法,来进行文件过滤。满足过滤器的存入File数组
    listFiles(FileFilter filter)
    listFiles(FilenameFilter filter)
public class Demo03FileSearch {
    //1.上面用递归和字符串尾缀匹配的方法来找 .java 文件
    //2. 这里采用File类中listFiles()的两种重载方法,来进行文件过滤。
    //3.listFiles(FileFilter filter)    listFiles(FilenameFilter filter)
    //4.FileFilter是一个接口,只有accept一个抽象方法,因为可使用lambda表达式优化匿名内部类

    public static void main(String[] args) {
        File dir = new File("/Users/IdeaProjects/JavaDemo");
        getAllFiles(dir);
    }

    private static void getAllFiles(File dir) {
        // System.out.println(dir);       //打印所有文件夹
        //用到listFiles()方法,查看下一级内容
        //这里使用带有过滤器的listFiles(filter)方法,符合过滤器规则的,返回true,则保存到File[]数组中

        File[] files = dir.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if (pathname.getName().toLowerCase().endsWith(".java") || pathname.isDirectory()){
                    return true;
                }
                return false;
            }
        });
        
        for (File f : files) {
            if (f.isDirectory()){       //判断是否为文件夹,是则递归查看
                getAllFiles(f);
            }else {
                //搜索  .java文件
                if (f.getName().toLowerCase().endsWith(".java")){
                    System.out.println(f);  //兼容大小写,
                }
            }
        }

    }
}

优化2:使用lambda表达式优化匿名内部类(接口只有一个抽象函数的情况下) :

()->{} 只保留参数和方法体
        File[] files = dir.listFiles((pathname)->{
            return pathname.getName().toLowerCase().endsWith(".java") || pathname.isDirectory();
        });
RTA_OS基础功能讲解 2.6-资源锁和自旋锁 访问需要在任务和 ISR 之间共享的硬件或数据可能不可靠、不安全。这是因为当优先级较低的任务或 ISR 正在更新共享数据时,可能会发生任务或 ISR 抢占。这种情况被称为竞争条件,极难测试。访问共享数据的语句序列称为关键部分。要安全访问关键部分中引用的代码和数据,就需要执行互斥。换句话说,必须确保系统中没有其他任务或第 2 类 ISR 能够在关键部分期间抢占正在执行的任务。你可以将任务声明为非抢占式任务,这样就可以避免互斥问题。 阅读详情

相关推荐

智能车竞赛飞檐走壁组立体赛道电磁引导线设计与实现

本文深入解析了智能车竞赛飞檐走壁组立体赛道电磁引导线的核心设计与实现。针对垂直面、圆筒、跷跷板等立体元素,详细阐述了电磁线规格参数选择、三维空间铺设技巧及磁场调试方法,旨在帮助参赛队伍打造稳定可靠的导航系统,提升车模在复杂立体赛道上的通过率与稳定性。

bert9linguist的博客 280

绝对路径和相对路径

System.out.println("file="+file.getAbsolutePath());System.out.println("目录-可以继续向下获取"+file);System.out.println("file="+file);//直接调用方法自身。System.out.println("文件"+file);目录,目录可以包含子文件或子目录,继续深入获取。//获取目录下的子目录或文件。路径,某一个资源(文件或目录)在计算机中的位置。如果传参的File对象是。...

weixin_69984559的博客 274

Nordic BLE芯片RF测试

BLE设备在过蓝牙BQB,FCC,ETSI等各种认证时实验室一般都需要做RF各项指标的测试。Nordic公司的SDK包中提供了两种RF测试程序,一种是DTM,另一种是Radio test。这两种都可以做RF指标测试但各自又有区别。DTM是按照蓝牙规范中Direct test mode所要求数据格式测试(数据格式定义参看:Bluetooth Core Specification v5.0->...

5638

File类学习概述

File类 file类主要是电脑中文件和文件夹目录封装为一个file类,我们可以使用file类对文件或者文件夹进行操作。 File类构造方法 这部分内容简单一点,可以看看java开发文档 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2W3okEgt-1595937530721)(G:\JavaNotes\IO读写相关\File类学习.assets\image-20200728185259806.png)] File(String pathname) 通过将给定路径名字符串

m0_49397863的博客 250

第十六届蓝桥杯大赛软件赛(编程类)知识点大纲

难度:[1-3]难度:[1-5]难度:[1-3]难度:[2-5]难度:[1-5]

Future_yzx的博客 4113

Autosar 下电过程-基于ETAS工具

本文介绍基于ETAS工具对应的BIP包的下电过程,仅供参考。在最后调用SBC下电时,需要理清楚SBC的休眠流程,否则可能会出现休眠又唤醒情况。后面有空会介绍9471的休眠流程。

赞的博客 810

File类

1. File类 File的每一个实例用于表示文件系统中的一个文件或目录 使用File可以: 查看其表示的文件或目录的属性信息(名字,大小等) 创建,删除文件或目录 访问一个个目录的所有子项 注意:不能访问文件数据 创建file时需要指定其表示的文件或目录的路径,而路径有两种: 1. 绝对路径:优点:清晰明了 缺点:是不同操作系统的路径定义不同,并且绝对路径不灵活可变,跨平台使用非常不便,...

SileeLiu的博客 214

SAP ABAP 缓冲同步揭秘——从 DDLOG 表到 RSDBBUF3 的完整实践指南

DDLOG 看似一张不起眼的系统表,却承担着 SAP 多实例环境下的数据一致性重任。通过掌握其字段意义、解析方法及周边监控工具,你可以在性能与一致性之间找到最佳平衡;通过精细化的参数管理与主动刷新策略,更能在关键业务场景中确保“数据永远是最新的”。愿本文能成为你日常排障与架构决策的参考手册。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 312

使用File类查找某个文件夹下的文件

需求:使用File类查找某个文件夹下的文件

weixin_72979483的博客 296

“EXB文件的格式和编程“

首先,打开文件并读取文件头,然后解析文件头中的元数据信息。接下来,循环读取数据块,每次读取块头部分,解析块的大小和类型,并读取相应大小的块数据。文件头(Header):EXB文件通常包含一个文件头,用于存储关于文件的元数据信息。读取EXB文件时,首先需要解析文件头,以了解文件的属性和数据结构。总结起来,EXB文件是一种常见的二进制数据文件格式,在编程中处理EXB文件需要了解其基本结构和元数据信息。通过以上代码,您可以根据自己的需求扩展处理其他类型的数据块,或者根据EXB文件的具体规范进行解析和处理。

HackCyberX的博客 1534

【大模型】DeepSeek 高级提示词技巧使用详解

DeepSeek 高级提示词技巧使用详解

congge 1万+

文件搜索相关命令

find . -name “file” -type l : 查找当前目录下的file文件并且是链接文件。也可以改为 : find . -name “file” -a -type l。:逻辑与,在命令中用-a表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足。-A除了显示符合范本样式的那一列之外,并显示该行之后的内容。-i忽略字符大小写的差别。-C除了显示符合样式的那一行之外,并显示该行之前后的内容。-B除了显示符合样式的那一行之外,并显示该行之前的内容。

2302_76775707的博客 317

《C#零基础入门之百识百例》(七十一)委托介绍 -- 战士升级示例

委托的存在是因为,我们有时候需要将一个函数作为另一个函数的参数,这时就要用的委托(Delegate)机制。委托用关键字`delegate`声明,他实际上定义了一种“函数类型”,明确规定了函数参数类型和返回值类型。

陈言必行 -- Unity游戏开发领域优质博主 2110

JavaSE——File类详解(递归查找文件)

JavaSE——File类详解(递归查找文件)

雷神乐乐的博客 1555

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java:File类、递归、查找文件

1、File类-概述 1)java.io.File 这个类可以表示磁盘上的一个文件/目录,可以获取文件/目录的一些属性信息: 文件/目录的名字 文件的大小 文件/目录的最后修改时间 文件/目录是否可读、是否可写 2、File类-File类的构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径...

qq_38353993的博客 4114

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java基础之File类的使用 与查找相应文件实例

下面的话 从代码中找答案 输入路径 路径的 三种表示方式 判断文件是否存在 创建文件 判断是否是文件夹 文件夹的删除 (空文件夹可删 文件夹不为空 删除失败) 列出文件夹内所有文件名(仅是当前目录 不能更深一层) 列出所有的文件 以file对象返回 仅当前目录 有多种属性方法 可获得长度 名字 路径 等等等 其中最后修改时间 看下列截图 需要修改格式 其中还有相对路径(少)和绝对路径(多)的区...

C_time的博客 718

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

一、File类的使用

目录 一、概念 二、创建类的实例 (一)常用构造器 1.构造器1(public File(String pathname)) 2.构造器2(public File(String parent,String child)) 3.构造器3(public File(File parent,String chile)) (二)路径 1.相对路径 2.绝对路径 3.路径分隔符 ①.不同系统中有不同的路径分隔符 ②.注意事项 三、File类的常用方法 (一)获取 pub...

博客的博客 1625

Java File类(文件操作类)详解

在操作文件之前必须创建一个指向文件的链接或者实例化一个文件对象,也可以指定一个不存在的文件从而创建它。Java 中的 File 类是文件和目录路径名的抽象形式。使用 File 类可以获取文件本身的一些信息,例如文件所在的目录、文件长度、文件读写权限等。本节将对 File 类进行详细介绍。 File 类简介 在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象。Fil...

jijiangpeng的博客 1830

Java中的File类及对文件的操作

File类: 文件和目录路径名的抽象表示形式 方法: 1、创建功能: public boolean createNewFile():创建文件,如果存在就不创建并返回false public boolean mkdir():创建文件夹,如果存在这样的文件夹就不创建并返回false public boolean mkdirs():创建多层文件夹,如果父文件夹不...

仙女的博客 795

Java 中使用 File 类创建文件

详细的介绍了 File 类的使用,及其常用方法。

weixin_74200123的博客 2036

File类(文件的删除,查找,创建,遍历等)

File类 概述 是java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建,查找,删除等操作。 Java是把电脑中的文件和文件夹(目录)封装成了一个File类,我们可以使用File类对文件和文件夹进行操作。 可以使用File类的方法 创建一个文件,文件夹 删除一个文件,文件夹 获取一个文件,文件夹 判断文件,文件夹是否存在 对文件夹进行遍历 获取文件的大小 File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法。 构造方法 public Fi

weixin_52284319的博客 317

Java:File类详解

Java:File类详解

游手好闲 1210

File类 文件的遍历与删除

文件File 文件可以永久性的保存信息,使数据持久化; File 类    1.java.io包;    2.创建对象:有参构造方法;     File file = new File(“D:\test\Test.txt”);    3.File是在内存中,与硬盘上的文件或文件夹是映射关系,一一对应;    4.File是不能操作文件中的内容的;    5.常用方法:     canRead()...

你好,Java!的博客 1551

File 类 读写文件操作

File 类 命名空间: System.IO 程序集: System.IO.FileSystem.dll 提供用于创建、复制、删除、移动和打开单一文件的静态方法,并协助创建FileStream对象。 示例 下面的示例演示如何使用File类检查文件是否存在,根据结果创建新文件并对其进行写入,或者打开现有文件并从中读取。在运行代码之前,请创建一个c:\temp文件夹 using System; using System.IO; class Test { public s...

weixin_46681279的博客 2280

JAVA 用File类创建文件或文件夹等

JAVA 用File类创建文件或文件夹等 1、File类相关函数 * boolean createNewFile() :创建文件 返回值表示是否创建成功 * ①当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件 * ②如果路径不存在,就不能创建文件 * boolean mkdir() :创建...

海月汐辰 5811

java 操作文件File类

File 文件类 用来将文件或者文件夹封装成为对象。 方便对文件与文件夹的属性信息进行操作。 File对象可以作为参数传递给流的构造函数。 File 类的常用的方法。import java.io.*; /*File类的常见方法 1.创建。 boolean createNewFile(); boolean mkdir();创建文件夹 boolean mkdirs();

u011129848的专栏 7988
上一篇: 微信增加视频号模块,视频号的申请流程和规则
下一篇: Java面试必备指南
UP青年
博客等级 码龄10年 12粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值