13_1、Java的IO流之File类的使用

news2025/1/13 13:43:40

一、File类的理解

1、File的对象代表着一个文件或者一个文件目录

2、File类在java.io包下。

3、File类中涉及文件或文件目录相关的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到对文件内部的内容的读取、写入等操作,如果需要对文件的内容进行操作,必须使用IO流。

4、后续File类的对象常常作为参数传入的构造其中,指明写入或读取的“终点”。

二、File的实例化

1、常用构造器

File(String FilePath);

File(String parentPath,String childPath);

File(File file,String childPath);

@Test
    public void test1(){
        //构造器1
        File file1 = new File("hello.txt");//相对于当前module下的位置.
        File file2 = new File("E:\\Java\\ideacode\\workspace221115\\JavaSenior\\JavaSenior\\day08\\he.txt");

        System.out.println(file1);
        System.out.println(file2);

        //构造器2
        File file3 = new File("E:\\Java\\ideacode\\workspace221115\\JavaSenior\\JavaSenior","day08");
        System.out.println(file3);

        //构造器3
        File file4 = new File(file3,"he.txt");
        System.out.println(file4);
    }

2、路径的分类

相对路径:相对于当前module下的路径

绝对路径:自盘符起的完整路径。

说明:

①在idea中:

如果使用单元测试方法中,相对路径是相对当前module下。

如果使用main()测试,相对路径则在当前Project下。

②在eclipse中:

无论是单元测试方法还是main()测试,相对路径都在当前工程下。

3、路径分隔符

①windows:\\

②unix:/

③Java程序支持跨平台运行,因此路径分隔符要慎用。为了解决这个隐患,File类提供了一个常量:

public static final String separator。根据操作系统,动态的提供分隔符。

File file1 = new File("d:\\atguigu\\info.txt");
File file2 = new File("d:" + File.separator + "atguigu" + File.separator + "info.txt");
File file3 = new File("d:/atguigu");

三、File类的常用方法

1、File类的获取功能

/*
 public String getAbsolutePath():获取绝对路径
 public String getPath() :获取路径
 public String getName() :获取名称
 public String getParent():获取上层文件目录路径。若无,返回null
 public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
 public long lastModified() :获取最后一次的修改时间,毫秒值

以下两个方法时针对获取文件及文件目录
 public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
 public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数
     */

    @Test
    public void test2(){
        File file1 = new File("hello.txt");
        File file2 = new File("E:\\Java\\ideacode\\workspace221115\\io\\he.txt");

        System.out.println(file1.getAbsoluteFile());
        System.out.println(file1.getPath());
        System.out.println(file1.getName());
        System.out.println(file1.getParent());
        System.out.println(file1.length());
        System.out.println(new Date(file1.lastModified()));

        System.out.println();

        System.out.println(file2.getAbsoluteFile());
        System.out.println(file2.getPath());
        System.out.println(file2.getName());
        System.out.println(file2.getParent());
        System.out.println(file2.length());
        System.out.println(file2.lastModified());

    }

    @Test
    public void test3(){
        File file1 = new File("E:\\Java\\ideacode\\workspace221115\\JavaSenior\\JavaSenior");
        String[] list = file1.list();
        for(String s : list){
            System.out.println(s);
        }
        System.out.println();

        File[] files = file1.listFiles();
        for(File f : files){
            System.out.println(f);
        }
    }

2、File类的重命名功能

/*
     File类的重命名功能
        public boolean renameTo(File dest):把文件重命名为指定的文件路径
        以file1.renameTo(file2)为例:
        要保证返回true:file1文件在硬盘中存在,并且file2在硬盘中不存在
     */
    @Test
    public void test4(){
        File file1 = new File("hello.txt");
        File file2 = new File("E:\\Java\\ideacode\\workspace221115\\io\\hi.txt");

        boolean renameTo = file2.renameTo(file1);
        System.out.println(renameTo);
    }

3、File类的判断功能

/*
    File类的判断功能
       public boolean isDirectory():判断是否是文件目录
       public boolean isFile() :判断是否是文件
       public boolean exists() :判断是否存在
       public boolean canRead() :判断是否可读
       public boolean canWrite() :判断是否可写
       public boolean isHidden() :判断是否隐藏
     */

    @Test
    public void test5(){
        File file1 = new File("hello.txt");

        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
        System.out.println(file1.exists());
        System.out.println(file1.canRead());
        System.out.println(file1.canWrite());
        System.out.println(file1.isHidden());

        System.out.println();

        File file2 = new File("E:\\Java\\ideacode\\workspace221115\\io");
        System.out.println(file2.isDirectory());
        System.out.println(file2.isFile());
        System.out.println(file2.exists());
        System.out.println(file2.canRead());
        System.out.println(file2.canWrite());
        System.out.println(file2.isHidden());
    }

4、File类的创建和删除功能

/*
    File类的创建功能
       public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
       public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
       public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建

    注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目路径下。

    File类的删除功能
       public boolean delete():删除文件或者文件夹

    删除注意事项:Java中的删除不走回收站。
     */

    @Test
    public void test6() throws IOException {
        File file1 = new File("hi.txt");
        if(!file1.exists()){
            //创建文件
            file1.createNewFile();
            System.out.println("创建成功");
        }else{//文件存在
            //删除文件
            file1.delete();
            System.out.println("删除成功");
        }
    }

    @Test
    public void test7(){
        //创建文件目录
        File file1 = new File("E:\\Java\\ideacode\\workspace221115\\io\\io1\\io3");

        boolean mkdir = file1.mkdir();
        if(mkdir){
            System.out.println("创建成功1");
        }

        File file2 = new File("E:\\Java\\ideacode\\workspace221115\\io\\io1\\io4");
        boolean mkdirs = file2.mkdirs();
        if(mkdirs){
            System.out.println("创建成功2");
        }

        //删除文件目录,如果想删除成功,那么该文件目录下不能有文件或文件目录。Java中的删除不走回收站。
        File file3 = new File("E:\\Java\\ideacode\\workspace221115\\io\\io1\\io4");
        file3 = new File("E:\\Java\\ideacode\\workspace221115\\io\\io1");//false
        System.out.println(file3.delete());
    }

练习:判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称 。

public class FindJPGFileTest {

    @Test
    public void test1(){
        File srcFile = new File("d:\\code");
        
        String[] fileNames = srcFile.list();
        for(String fileName : fileNames){
            if(fileName.endsWith(".jpg")){
                System.out.println(fileName);
            }
        }
    }
    @Test
    public void test2(){
        File srcFile = new File("d:\\code");
        
        File[] listFiles = srcFile.listFiles();
        for(File file : listFiles){
            if(file.getName().endsWith(".jpg")){
                System.out.println(file.getAbsolutePath());
            }
        }
    }
    /*
     * File类提供了两个文件过滤器方法
     * public String[] list(FilenameFilter filter)
     * public File[] listFiles(FileFilter filter)

     */
    @Test
    public void test3(){
        File srcFile = new File("d:\\code");
        
        File[] subFiles = srcFile.listFiles(new FilenameFilter() {
            
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".jpg");
            }
        });
        
        for(File file : subFiles){
            System.out.println(file.getAbsolutePath());
        }
    }
    
}

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

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

相关文章

2023年玩兔年小游戏《兔兔保卫萝卜战》赢新年祝福「钱兔无量」

PS:粉丝可以免费领源码,私信我或者评论666即可~~~~~~~~ 导读 | 世界杯虽已闭幕,但其带给我们的精彩,仿佛就在昨天,想一想,还是有一种爽劲,不知道大家是否也这样?转眼就到了2023年&a…

Java框架:Mybatis

文章目录一、Mybatis概述1.1概念1.2优点与缺点1.3MyBatis和Hibernate的区别1.4Mybatis的核心对象1.5Mybatis执行流程三、Mybatis的快速使用3.1开发环境3.2 创建一个maven项目3.3添加Maven依赖3.4MySQL创建user表3.5创建数据源database.properties文件3.6编写mybatis-config.xml…

H13-531云计算HCIE V2.0——1~400常错题和知识点总结

1~100 35、FusionStorage Block无法是被配置RAID的磁盘,一定要将RAID信息删除后, Fusionstrage block才能识别到这些磁盘? 错误 61、Ceilometer监控通过在计算节点部署Compute服务 84.(多选)在配置 FusionSphere OpenStack 时,可以用来实…

商务BD干多了,做一个无情的微信发消息机器人帮我发消息吧

1. 有没有那种做微信的伙伴,每天需要定点定时发消息? 2. 有没有那种做电商商务的朋友,每天需要发消息提醒达人商务们? 3. 有没有那种需要定时定点打卡,需要提醒自己要干啥的兄弟姐妹?** 那么有没有大冤种去…

如何获取电脑软件图标和app图标

如何获取电脑软件图标和app图标大家在写博客或者作图的时候经常会需要找到电脑软件图标或者app图标,如果从网上找有的图标并不清楚,今天给大家分享下,怎么快速的获取电脑软件图标和app图标,得到的图标也比较清楚。电脑软件图标获取…

【操作系统】操作系统的Buffer和Cache

文章目录1.Buffer和Cache的区别2.磁盘和文件写入操作案例3.磁盘和文件读取操作案例4.Cache和Buffer的命中案例1.Buffer和Cache的区别 (1)什么是Buffer Buffer指Linux内存的 Buffer cache(缓冲区)。Buffer为了让不同的速度的设备…

【迅为iMX6Q】开发板 Linux 5.15.71 SD卡 启动

开发环境 win10 64位VMware Workstation Pro 16ubuntu 22.04【迅为imx6q】开发板, 2G DDR linux-imx 下载 使用 NXP 官方提供的 linux-imx,代码地址为: https://github.com/nxp-imx/linux-imx 使用 git 下载 linux-imx, git cl…

Linux应用编程---6.无名管道

Linux应用编程—6.无名管道 6.1 pipe()函数使用详情 ​ 管道是进程之间进行通讯的一种方式。管道有两种,分别是:无名管道和有名管道。先看无名管道。管道创建函数是pipe(),在Linux终端输入man pipe。 图1 pipe()函数详情NAMEpipe, pipe2 - …

Mathorcup数学建模竞赛第六届-【妈妈杯】B题:小区车位分布的优化设计与评价(附一等奖获奖论文、C++和matlab代码)

赛题描述 随着现代社会经济的快速发展,房地产成为国家经济发展中重要的经济增长点之一。而小区内汽车停车位的分布对于小区居民的上下班出行影响很大。请建立数学模型,解决下列问题: 问题1:分析评判小区汽车停车位分布是否合理的几个关键指标,建立评判车位分布合理的数学…

mybatis官方文档之第一个mybatis程序实操

mysql数据库准备工作: 首先,我们需要在mysql数据库中,建立数据库和数据表: //创建数据库 create database my_batis; //创建表 create table students(id int not null,name varchar(30) default null,pwd varchar(30) default …

用移动激光扫描来估计树干直径的分割和树干校准法

Paper题目:Mobile Laser Scanning for Estimating Tree Stem Diameter Using Segmentation and Tree Spine Calibration Abstract 移动激光扫描 (MLS) 可以通过使用自动推导出树干中心位置和树干直径的算法来提高森林清查效率。在这项工作中,我们提出了…

远程控制软件– 向日葵使用教程

新冠疫情的严峻形式下,各地都延期复工,一时间远程办公,在家办公可谓非常火爆。然而,家里毕竟不是公司,很多的资料都在办公室电脑,甚至一些比较专业系统或者专属网络限制无法完成在家办公,这时候…

从加(解)密角度讲栅栏密码

目录普通型栅栏加密原理解密原理W型栅栏加密原理实例解密原理这今天在做新生赛的一道“只有倒着翻过十八层的篱笆才能抵达北欧神话的终点”,研究了很长时间的栅栏原理,flag没出来,而且自己对于普通和W型的加密解密整的有的蒙… 原先一篇文章里…

sentinel-流量控制

github地址:主页 alibaba/Sentinel Wiki GitHub 目录 概述基于 QPS/并发数的流量控制基于调用关系的流量控制 概述 流量控制(flow control),其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对…

免费安全的内网穿透实现——Tailscale

一、需求说明想要实现访问公司或家里的网络设备(Windows电脑、NAS、安卓设备等);但是这些设备又没有对应的公网IP地址;且就算有公网 IP 地址,也不放心让这些网络设备直接公开暴露在网络环境中(这样很容易被频繁的恶意扫…

【MySQL Tips】除了指定密码外 MySQL客户端更好的选择——登录路径

在实际项目中,我们在生产(环境)发布新版本或运维时,使用 mysql 、mysqladmin、mysqlimport、mysqldump、mysqlpump 等 MySQL 客户端程序时,每次都需要输入密码,一般都会采用更安全的互动输入密码模式&#…

UOS 22.0家庭版使用体验

1月4日这天我收到了UOS的22.0版本的推送,更新后新增了未成年人账户和学习中心,由于是虚拟机中所以无法新增未成年人账户,于是我制作了Linux to go(LTG)但是由于我的U盘不是固态U盘所以我用普通的更新就卡在了更新界面。…

Linux下第一个程序:进度条

一、前言 进度条程序曾经是百度的一道面试题。 这一期博客我们来介绍代码和原理究竟是怎样的。 二、知识点 1.回车和换行 通常意义上我们以为回车就是就是键盘的那个回车键。 其实不然。回车其实是不换行,回到本行开头。我们通常用符号表示为 \r 。 换行就是新…

Docker Compose安装

目录 前言 1. 二进制包在线安装 2. 二进制包离线安装 2.1 下载安装包。 2.2 上传到linux服务器 2.3 解压到/usr/local/bin/docker-compose目录。 2.4 将可执行权限应用于二进制文件 2.5 创接建软链(可选) 2.6 测试是否安装成功 3. 国内镜像二进…

Linux应用编程---3.wait()函数

Linux应用编程—3.wait()函数 ​ 首先引入三个函数,我们通过在Linux终端下查阅它的作用与使用方法。 ​ Linux终端命令下输入:man exit,敲击回车键即可打开exit函数详情页。 图1 exit编程手册​ exit函数的作用是终止一般进程,没…