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

news2024/11/18 4:25:58

文章目录

    • 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() {
            @Override
            public 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热爱者了解文章,作者将会持续更新中,期待各位友友的关注和收藏。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1891673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于目标鲁棒的电动汽车及基站储能联合参与电力市场的决策模型 》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

SpringCloud进阶篇

文章目录 网关快速入门创建模块引入依赖修改启动类配置路由路由过滤(一般不用) 自定义GlobalFilter登录校验登录校验过滤器 微服务获取用户信息保存用户信息到请求头拦截器获取用户信息 OpenFeign传递用户信息配置共享添加共享配置拉取共享配置 配置热更新添加配置到Nacos配置热…

#LinuxC高级 笔记二

makefile gcc gdb makefile 1. 分文件编程 1.1 源文件&#xff1a;.c结尾的文件 包含main函数的.c 包含子函数的.c 1.2 头文件&#xff1a;.h结尾的文件 头文件、宏定义、typedef 、结构体、共用体、枚举、函数声明 include引用时“”和<>的区别&#xff1a; <>去系…

泰安再见,泰山OFFICE还会再见

路过泰安&#xff0c;遇见彩虹。怀念和感恩在泰山信息科技的万丈豪情。 泰山OFFICE&#xff0c;还是要复活。

苹果电脑虚拟机运行Windows Mac环境安装Win PD19虚拟机 parallels desktop19虚拟机安装教程免费密钥激活

在如今多元的数字时代&#xff0c;我们经常需要在不同的操作系统环境下进行工作和学习。而对于 Mac 用户来说&#xff0c;有时候需要在自己的电脑上安装 Windows 操作系统&#xff0c;以体验更多软件及功能&#xff0c;而在 Mac 安装 Windows 虚拟机是常用的一种操作。下面就来…

Git详细安装和使用教程

文章目录 准备工作-gitee注册认识及安装GitGit配置用户信息本地初始化Git仓库记录每次更新到仓库查看及切换历史版本Git忽略文件和查看文件状态Git分支-查看及切换Git分支-创建分支Git分支-合并及删除分支Git分支-命令补充Git分支-冲突需求: 准备工作-gitee注册 传送门: gite…

Paimon 在汽车之家的业务实践

汽车之家基于Paimon的实践 摘要&#xff1a;本文分享自汽车之家的王刚、范文、李乾⽼师。介绍了汽车之家基于 Paimon 的一些实践&#xff0c;和一些背景。内容主要为以下四部分&#xff1a; 一、背景 二、业务实践 三、paimon 优化实践 四、未来规划 一、背景 在使用Paimon之前…

独立开发者系列(18)——js的window对象

独立开发者&#xff0c;必然要面对JS代码&#xff0c;基本可以认为在脚本语言里面&#xff0c;JS门槛最低&#xff0c;正因为如此&#xff0c;JS也是最受欢迎的开发语言之一。JS的代码运行规律&#xff0c;按照代码模块执行&#xff0c;也就是<script></script> 每…

node版本控制工具nvm,让你不用再重装node来更新版本。

引言 由于项目的nodejs版本不一致&#xff0c;导致需要卸载安装换版本&#xff0c;十分麻烦&#xff0c;使用nvm node版本控制器来快速切换node版本 下载安装 先把你原来的node安装目录删掉 github下载nvm-setup.zip。傻瓜式安装 Releases coreybutler/nvm-windows (gith…

宝塔Linux面板配置环境 + 创建站点

一、安装 &#xff08;1&#xff09;进入宝塔官网 https://www.bt.cn/new/index.html &#xff08;2&#xff09;点击“ 立即免费安装 ”&#xff0c;选择 Centos安装脚本 &#xff08;3&#xff09;进入 ssh 输入以下命令安装宝塔 yum install -y wget && wget -O …

【论文解读】CVPR2024:DUSt3R: Geometric 3D Vision Made Easy

论文“”https://openaccess.thecvf.com/content/CVPR2024/papers/Wang_DUSt3R_Geometric_3D_Vision_Made_Easy_CVPR_2024_paper.pdf 代码&#xff1a;GitHub - naver/dust3r: DUSt3R: Geometric 3D Vision Made Easy DUSt3R是一种旨在简化几何3D视觉任务的新框架。作者着重于…

错误 [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试 python ping

报错提示&#xff1a;错误 [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试 用python做了一个批量ping脚本&#xff0c;在windows专业版上没问题&#xff0c;但是到了windows服务器就出现这个报错 解决方法&#xff1a;右键 管理员身份运行 这个脚本 …

电子工程与网络技术解析

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 正文 1、MUX&PD是什么意思 2、Hub 和HUB有什么区别 3、Redriver什么意思 4、Switch是什么意思 5、USB 2.0 ETHERNET2什么意思 6、…

Ubuntu18.04新安装--无网络连接、重启黑屏解决教程

一、安装Ubuntu Ubuntu安装需要U盘作为启动盘&#xff0c;在目前教新的电脑中选中GPT作为分区&#xff0c;制作启动盘&#xff0c;其中在安装双系统Ubuntu时&#xff0c;以自定义格式作为存储空间。详细安装过程以以及如何分区请参考下列链接&#xff1a;内含详细安装过程&…

教育场景中的自动化分拣系统!基于大象机器人UltraArm P340机械臂和传送带的实现

引言 今天我们将展示一个高度自动化的模拟场景&#xff0c;展示多个机械臂与传送带协同工作的高效分拣系统。在这个场景中&#xff0c;机械臂通过视觉识别技术对物体进行分类&#xff0c;并通过精确的机械操作将它们放置在指定的位置。这一系统不仅提高了分拣的速度和准确性&am…

Vue el-table列合并

1.封装公用方法 const dataMethod (data, isH []) > {let spanObj {}; // 存储每个key 对应的合并值let pos {}; // 存储的是 key合并值得索引// 循环数据for (let i 0; i < data.length; i) {let dataI data[i];// 循环数据内对象&#xff0c;查看有多少keyfor (…

使用U盘重装系统

目录 一、 制作启动盘 1. 准备一个U盘和一台电脑 2. 下载win10安装包 二、安装操作系统 1. 插入系统安装盘 2. 通过进入BIOS界面进入到我们自己制作的启动盘上 三、安装成功后进行常规设置 一、 制作启动盘 1. 准备一个U盘和一台电脑 注意&#xff1a;提前备份好U盘内的…

九浅一深Jemalloc5.3.0 -- ⑧浅*free

目前市面上有不少分析Jemalloc老版本的博文&#xff0c;但最新版本5.3.0却少之又少。而且5.3.0的架构与5之前的版本有较大不同&#xff0c;本着“与时俱进”、“由浅入深”的宗旨&#xff0c;我将逐步分析最新release版本Jemalloc5.3.0的实现。 另外&#xff0c;单讲实现代码是…

PyTorch环境配置及安装

PyTorch环境配置及安装 Step1&#xff1a;安装Anaconda 参考该链接&#xff08;视频01:30--03:00为安装教程&#xff09;&#xff1a; 【PyTorch深度学习快速入门教程&#xff08;绝对通俗易懂&#xff01;&#xff09;【小土堆】】 https://www.bilibili.com/video/BV1hE41…

04通俗理解自注意力机制(self-attention)

04浅谈自注意力机制&#xff08;self-attention&#xff09; 1. 基本概念 注意力机制 是Transformer模型的核心。它的作用是让模型能够“关注”输入数据的不同部分&#xff0c;而不是一次只处理一个词。比如&#xff0c;当模型在处理一句话时&#xff0c;它可以同时考虑句子中…