File类的使用

news2024/9/23 19:28:19

java,File类

  • File类
    • 静态成员变量
    • 构造方法
    • 常用方法
      • 用于创建、删除文件/文件夹的方法
      • 用于遍历文件/文件目录的方法
      • 文件过滤器方法

File类

Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。

File对象代表磁盘中实际存在的文件和目录。
在这里插入图片描述
在这里插入图片描述

静态成员变量

静态成员变量描述
static String pathSeparator路径分隔符 windows是分号; linux是冒号:
static char pathSeparatorChar与系统相关的路径分隔符。
static String separator文件名称分隔符 windows是 \ 反斜杠 ; linux是正斜杠/
static String pathSeparator文件名称分隔符
package com.gothic.sunset.demo1;

import java.io.File;

public class DemoTestFile1 {
    public static void main(String[] args) {
        String pathSeparator = File.pathSeparator;
        System.out.println(pathSeparator); // 路径分隔符;windows是分号;  linux是冒号:
        String separator = File.separator;
        System.out.println(separator); //  文件名称分隔符 windows是 \反斜杠  linux是正斜杠/
    }
}

构造方法

构造方法 Constructor描述
File​(File parent, String child)从父抽象路径名和子路径名字符串创建新的 File实例。
File​(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File​(String parent, String child)从父路径名字符串和子路径名字符串创建新的 File实例。
File​(URI uri)通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。
package com.gothic.sunset.demo1;

import java.io.File;

public class DemoTestFile2 {


    //File相关构造类的使用
    public static void main(String[] args) {

       // show1(); 通过指定路径来创建file对象

        show2();


    }


    //通过指定的路径来创建file对象
    private static void show1() {
        //先拿绝对路径来试试
        File file1 = new File("D:\\IdeaProjects\\studyFileIo\\src\\main\\java\\com\\gothic\\sunset\\text\\a.txt");
        System.out.println(file1);
        //再试试相对路径----- 这里必须使用完整的绝对路径
        File file2 = new File("\\text\\a.txt");
        System.out.println(file2);

    }

    // 从父路径名字符串和子路径名字符串创建新的 File实例。
    // 从父抽象路径名(File对象)和子路径名字符串创建新的 File实例。
    private static void show2() {

        //父路径和子路径结合获取file对象
        File file1 = new File("D:\\IdeaProjects\\studyFileIo\\src\\main\\java\\com\\gothic\\sunset\\text","a.txt");
        System.out.println(file1);

        // 使用file对象作为父路径,再使用子路径字符串拼接
        File fileParent = new File("D:\\IdeaProjects\\studyFileIo\\src\\main\\java\\com\\gothic\\sunset\\text");
        System.out.println("父路径对象:"+fileParent);
        File fileChild = new File(fileParent,"a.txt");
        System.out.println("fileChild"+fileChild);

    }


}

常用方法

返回值 方法名 参数描述
String getPath​()将此File对象转换为路径名字符串。
String getAbsolutePath​()返回此File对象的绝对路径名字符串。
String getName()返回由此抽象路径名表示的文件或目录的名称。
long length​()返回由此File对象表示的文件的长度。
boolean exists()测试此File对象表示的文件或目录是否存在。
boolean isDirectory()测试此File对象表示的文件是否为目录
boolean isFile()测试此File对象表示的文件是否为普通文件
package com.gothic.sunset.demo1;

import java.io.File;

public class DemoTestFile3 {

    public static void main(String[] args) {

        // testMethod1();
        // testMethod2();
        // testMethod3();
        testMethod4();
    }


    //File类常用方法介绍

    //String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
    private static void testMethod1() {
        File file1 = new File("D:\\IdeaProjects\\studyFileIo\\src\\main\\java\\com\\gothic\\sunset\\text\\a.txt");
        String absolutePath = file1.getAbsolutePath();
        System.out.println(absolutePath);
        //相对路径抽象file对象,这里因为我是在工程下,,,,,
        File file2 = new File("src\\main\\java\\com\\gothic\\sunset\\text\\a.txt");
        String absolutePath2 = file2.getAbsolutePath();
        System.out.println(absolutePath2);

    }

    // String getPath() 将此抽象路径名转换为路径名字符串。  其实就是file的toString
    private static void testMethod2(){
        File file2 = new File("D:\\IdeaProjects\\studyFileIo\\src\\main\\java\\com\\gothic\\sunset\\text\\a.txt");
        String path = file2.getPath();
        System.out.println(path);
    }


    // String getName() 返回由此抽象路径名表示的文件或目录的名称。
    private static void testMethod3(){

        File file1 = new File("D:\\IdeaProjects\\studyFileIo\\src\\main\\java\\com\\gothic\\sunset\\text\\a.txt");
        System.out.println(file1.getName());

    }

    //long length() 返回由此抽象路径名表示的文件的长度。
    //如果文件不存在,则返回0
    public static void testMethod4(){

        File file1 = new File("D:\\IdeaProjects\\studyFileIo\\src\\main\\java\\com\\gothic\\sunset\\text\\a.txt");
        long length = file1.length();
        System.out.println(length);

        File file2 = new File("D:\\IdeaProjects\\studyFileIo\\src\\main\\java\\com\\gothic\\sunset\\text\\鲸鱼小屋.png");
        long length2 = file2.length();
        System.out.println(length2);

    }
}

package com.gothic.sunset.demo1;

import java.io.File;

public class DemoTestFile4 {

    public static void main(String[] args) {

        //判断文件是否存在以及它是文件夹还是文件
        testShow();

    }

    //boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
    //boolean isDirectory() 测试此抽象路径名表示的文件是否为目录。
    //boolean isFile() 测试此抽象路径名表示的文件是否为普通文件。
    public static void testShow(){

        File file1 = new File("D:\\IdeaProjects\\studyFileIo\\src\\main\\java\\com\\gothic\\sunset\\text\\鲸鱼小屋.png");
        if (file1.exists()){
            System.out.print("路径存在");
            if (file1.isFile()){
                System.out.print("并且它是文件");
                return;
            }
            if (file1.isDirectory()){
                System.out.print("并且它是文件夹");
                return;
            }
        }
        System.out.println("路径不存在");

    }
}

用于创建、删除文件/文件夹的方法

返回值 方法名 参数描述
boolean createNewFile()当且仅当具有该名称的文件尚不存在时,创建一个由该File对象命名的新的空文件
boolean mkdir()创建由此File对象路径名命名的目录。 创建单级文件夹
boolean mkdirs()创建由此File对象路径名命名的目录,包括任何必需但不存在的父目录。创建单级和多级文件夹
boolean delete()删除由此File对象路径名表示的文件或目录
package com.gothic.sunset.demo1;

import java.io.File;
import java.io.IOException;

public class DemoTestFile5 {


    public static void main(String[] args) throws IOException {

        show();
    }

    /* 创建删除功能
     *
     * boolean createNewFile() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
     * boolean mkdir() 创建由此抽象路径名命名的目录。 创建单级文件夹
     * boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。创建单级和多级文件夹
     * boolean delete() 删除由此抽象路径名表示的文件或目录。
     */
    private static void show() throws IOException {

        //创建一个多级文件夹
        File file1 = new File("C:\\Users\\gothi\\Desktop\\aa\\新建文件夹\\新建文件夹");
        System.out.println(file1.mkdirs());

        //在多级文件夹的基础上,创建一个单级文件夹
        File file2 = new File("C:\\Users\\gothi\\Desktop\\aa\\新建文件夹\\新建文件夹\\单级文件夹");
        System.out.println(file2.mkdir());

        //在单级文件夹的基础上创建一个a.txt文件
        File file3 = new File("C:\\Users\\gothi\\Desktop\\aa\\新建文件夹\\新建文件夹\\单级文件夹\\a.txt");
        System.out.println(file3.createNewFile());

        // 删除文件
        if(file3.exists()&&file3.isFile()){
            boolean delete = file3.delete();
            System.out.println("是否删除成功:"+delete);
        }

    }

}

用于遍历文件/文件目录的方法

返回值 方法名 参数描述
String[] list()返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
File[] listFiles()返回一个File类型的数组,表示由该抽象路径名表示的目录中的文件。

如果遍历的是一个文件或者不存在的文件夹目录 则会返回空指针异常NullPointerException

package com.gothic.sunset.demo1;

import java.io.File;

public class DemoTestFile6 {


    public static void main(String[] args) {
         show();
        // show2();

    }

    // 使用 String[] list() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。来遍历
    private static void show() {

        // 返回aa目录下的第一级包括的文件
        File file1  = new File("C:\\Users\\gothi\\Desktop\\aa");
        String[] list = file1.list();
        // 断言测试
        assert list != null;

        for (String s : list) {
            System.out.println(s);
        }

        // 如果遍历的是一个文件或者不存在的文件夹目录 则会返回空指针异常
        // File file2  = new File("C:\\Users\\gothi\\Desktop\\aa\\b"); // NullPointerException
        File file2  = new File("C:\\Users\\gothi\\Desktop\\aa\\b.txt"); // NullPointerException
        String[] list2 = file2.list();
        // 断言测试
        assert list2 != null;
        for (String s : list2) {
            System.out.println(s);
        }
    }

    // 使用 File[] listFiles() 来遍历
    private static void show2() {
        // 使用  File[] listFiles()  遍历的话,会将其目录下的所有文件的绝对路径返回到一个File类型的数组
        File file2  = new File("C:\\Users\\gothi\\Desktop\\aa");
        File[] list2 = file2.listFiles();
        assert list2 != null;
        for (File file : list2) {
            System.out.println(file);
        }

    }

}

文件过滤器方法

返回值 方法名 参数描述
String[] list(FilenameFilter filter)返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles(FileFilter filter)返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
File[] listFiles(FilenameFilter filter)返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

需求,找某一目录下的以.txt结尾的所有文件

1.手写的方式

package demo;

import java.io.File;
import java.util.Locale;

public class Pc {
    public static void main(String[] args) {
		// 文件路径
        String filePath = "C:\\Users\\gothi\\Desktop\\aa";
        // 创建file对象
        File f = new File(filePath);
        getAllFiles(f);
    }

    public static void getAllFiles(File file){
        File[] listFiles = file.listFiles();
        for (File fileItem:listFiles) {
            // 文件则继续递归
            if(fileItem.isDirectory()){
                getAllFiles(fileItem);
            }
            // 如果是文件则,判断其是否是以.txt结尾的
            if(fileItem.isFile()){
                if (fileItem.getPath().toLowerCase().endsWith(".txt")){
                    System.out.println(fileItem.getPath());
                }
            }
        }
    }
}

在这里插入图片描述
2.使用filefilter来过滤

package demo;

import java.io.File;
import java.io.FileFilter;
import java.util.Locale;

public class Pc {
    public static void main(String[] args) {

        String filePath = "C:\\Users\\gothi\\Desktop\\aa";
        File f = new File(filePath);
        // getAllFiles(f);
        getTxt(f);
    }

    public static  void getTxt(File file){
        File[] listFiles = file.listFiles(new FileFilterTest());
        for (File listFile : listFiles) {
           if(listFile.isDirectory()){
               getTxt(listFile);
           }else {
               System.out.println(listFile);
           }
        }
    }


}
// 一个内部类实现了FileFilter接口
class FileFilterTest implements FileFilter{

    // 重写accept方法
    @Override
    public boolean accept(File pathname) {
        // 如果是文件夹则继续遍历 并且过滤掉
        if(pathname.isDirectory()){
            return true;
        }
        // 如果是文件则不遍历,进行判断是否是以.txt结尾的,是的话返回true
        return pathname.getPath().toLowerCase().endsWith(".txt");
    }


}



在这里插入图片描述


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

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

相关文章

数据分析的大体思路

目录标题数据分析企业数据的分析的三个方向:离线分析(Batch Processing)实时分析(Real Time Processing |Streaming):机器学习(Machine Learning)数据分析的流程明确分析的目的和思路…

JVM调优基本概念

1、jvm组成以工作流程 jvm组成 类装载器、运行时数据区(内存模型)、字节码执行引擎 工作大致流程 首先我们的java类编译成class类文件,当我们的class文件开始执行,我们的虚拟机便开始工作。 类加载器将class加载到运行时数据区…

SSM之Spring(一)

目录 一:Spring简介 1.1 Spring概述 1.2 SpringFrameWork 1.2.1 SpringFrameWork特性 1.2.2 Spring Framework五大功能模块 二:IOC 2.1 IOC容器 2.1.1 IOC思想 2.1.2 IOC容器在Spring中的实现 2.2 基于XML管理bean 2.2.1 入门案例 2.2.2 获取bean…

Golang switch 的使用的注意事项和细节

内容来自:尚硅谷-韩老师教学笔记,链接:尚硅谷 1)case/switch 后是一个表达式( 即:常量值、变量、一个有返回值的函数等都可以) 2)case 后的各个表达式的值的数据类型,必须和 switch 的表达式数据类型一致 3…

辞暮尔尔烟火年年,朝朝暮暮岁岁平安。(2022年度总结)

目录 前言: 一、第一件事情,重新认识自己,从内核出发 二、第二件事情,告别内卷,拥抱微雕 三、第三件事情,愿2023,你我更更好 前言: 今天是2022年12月31日,2022年的最…

Shell——变量与脚本运行的方式

文章目录变量定义变量的几种方式1)无引号2)单引号3)双引号4)反引号export定义变量变量的提取、修改与删除1)变量的提取2)变量的修改3)变量的删除特殊变量1)位置参数2)${#…

Jetpack组件(fragment)(1)

一.什么是Fragment? 碎片是活动的一部分,使得活动更加的模块化设计。我们可以认为碎片是一种子活动。 碎片拥有自己的布局,自己的行为及自己的生命周期回调。当活动在运行的时候,你可以在活动中添加或者移除碎片。你可以合并多个碎片在一个…

Android修炼之混淆

自嘲时刻 作为Java和Android开发者,大家应该都对混淆很熟悉了。网上也有各路大神提供的混淆模板,基本上直接拿来用就好。但我还是想捋一捋,因为工作中被混淆这家伙“玩弄”了好几次,必须把它记在小本本上。 介绍 基本概念 混淆…

Cesium中使用Sampler3D,3D纹理,实现体渲染

Cesium中使用Sampler3D,3D纹理,实现体渲染 Cesium目前(20221231)还不支持直接使用3D纹理,但是其实内部已经可以WebGL2,而且内置常量也有3DTexture。所以,可以通过仿Texture,来实现3…

如何彻底的理解需求,做出更好的软件

背景: 最近接到了一个需求,大概的需求就是我们有一些数据,默认分为了两类。如果变多的话,用户找起来非常的困难,针对这个现象我们提出了两点解决方案。1:添加搜索。2:添加分组。 第一波设计&…

Android的adb命令实战篇-1

2023年 —— 是充满希望的一年. 对于Android开发者而言,ADB命令或多或少都使用过,今天我们就一起来整体回顾一下吧。 ADB的全称:Android Debug Bridge 1. ADB(Android Debug Bridge) 在实际工作中,周围同事会抱怨记不住常用的a…

过寒假

小时候,每到一放假就被父亲送回奶奶家。除了寒假作业,我还会带一堆书回去看。我小时候特别喜欢到邮电局大厅去订阅报刊杂志,就连学校也会报名订阅报刊。我小学时看完梁羽生的《七剑下天山》就是翻日报上每天的小说连载看完的。那时候过年时家…

Unity AR小游戏(玩具小车)踩坑记

最近对AR产生了兴趣。先科普一下什么是AR吧。AR是Augmented Reality(增强现实)的简称,是基于摄像头对现实世界的实时图像采集、分析和理解,然后在此基础上融入虚拟物体(信息),以达到增强体验的目…

Three.js学习(一)初识three.js

文章目录1.基本配置2.基本概念3.Api4.实现一个旋转动画1.基本配置 (1)安装 ​ npm install three (2)引入 import * as THREE from three2.基本概念 Three.js是基于原生WebGL封装运行的三维引擎。 (1)一…

【Linux】实验四 进程信号通信

文章目录一、实验目的二、 实验内容三、 实验原理1、信号3.1.1 信号的基本概念3.1.2、信号的发送2、所涉及的系统函数调用3.2.1 fork()3.2.2 kill( )This is my question.3.2.3 signal( )代码例子3.2.4 getpid()3.2.5 wait()四、 实验内容五、程序代码运行结果六、实验总结及心…

来玩,前端性能优化(+面试必问:宏任务和微任务)

前端性能优化相关的“技能点”笔者之前也写过几篇,但是大多都是小打小闹。我重新整理了曾经使用过的性能优化手段。本文介绍三种方案:页面资源预加载、服务请求优化和非首屏视图延迟加载。 页面资源预加载 页面是不可能真正预加载的,但是有…

Linux | PCIe Hotplug | 概念及工作原理的不完全总结

本文对 PCIe 热插拔的概念及工作原理进行不完全总结。 更新: 2022 / 12 / 31 Linux | PCIe Hotplug | 概念及工作原理的不完全总结热插拔组成部件实现代码通知式热插拔线程中断功耗管理意外移除错误处理整合移除BAR参考链接参考这里 1’ 2’ 3‘ 4’ 5 1992年初始…

postgresql数据库安装,备份还原

一.postgresql数据库安装 1.下载软件包 地址:PostgreSQL: File Browser 2.解压安装 [rootpostgresql u01]# tar -zxf postgresql-14.2.tar.gz安装环境 yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel op…

(深度学习快速入门)第一章:深度学习概述、应用、学习路线和框架选择

文章目录一:基本概念(1)神经网络(2)感知器(3)深度学习(4)前向运算和反向传播二:DeepLearning学习路线三:深度学习应用(1)生…

基于Stream的Redis消息队列

目录一、消息队列二、基于List结构模拟消息队列基于List的消息队列的优点:基于List的消息队列的缺点:三、基于PubSub的消息队列基于PubSub的消息队列的优点:基于PubSub的消息队列的缺点:四、基于Stream的消息队列1、XADD语法2、XR…