Java_File

news2024/11/20 0:34:59

介绍:

        File对象表示路径,可以是文件,也可以是文件夹。这个路径可以是存在的,也可以是不存在的,带盘符的路径是绝对路径,不带盘符的路径是相对路径,相对路径默认到当前项目下去找

构造方法:

public File(String pathname)    把字符串表示的路径变成File对象
public File(String parent, String child)    把父级路径和子级路径进行拼接
public File(File parent, String child)    把父级路径和子级路径进行拼接
代码演示:
public class FileDemo1 {
    public static void main(String[] args) {
        /*
        public File(String pathname)    把字符串表示的路径变成File对象
        public File(String parent, String child)    把父级路径和子级路径进行拼接
        public File(File parent, String child)    把父级路径和子级路径进行拼接
         */
        //路径 C:\Users\han\Desktop

        //1.public File(String pathname)    把字符串表示的路径变成File对象
        String str = "C:\\Users\\han\\Desktop";
        File f1 = new File(str);
        System.out.println(f1);

        //2.public File(String parent, String child)    把父级路径和子级路径进行拼接
        String parent = "C:\\Users\\han";
        String child = "Desktop";
        File f2 = new File(parent,child);
        System.out.println(f2);

        //3.public File(File parent, String child)    把父级路径和子级路径进行拼接
        File parent2 = new File("C:\\Users\\han");
        String child2 = "Desktop";
        File f3 = new File(parent2,child2);
        System.out.println(f3);
    }
}
运行结果:

成员方法:

1.判断和获取

下面来进行演示:

        这里我先在D盘的JavaFileTest文件夹中创建了文件夹aaa和文件a.txt

文件夹aaa中有一个文件b.txt,存储80个1,大小为80字节

文件a.txt中只有三个字符123,大小为3字节

代码演示:
public class FileDemo2 {
    public static void main(String[] args) {
        /*
        public boolean isDirectory()    判断此路径名表示的File是否为文件夹
        public boolean isFile()         判断此路径名表示的File是否为文件
        public boolean exists()         判断此路径名表示的File是否存在
        public long length()            返回文件的大小(字节数量)
        public String getAbsolutePath() 返回文件的绝对路径
        public String getPath()         返回定义文件时使用的路径
        public String getName()         返回文件的名称,带后缀
        public long lastModified()      返回文件的最后修改时间(时间毫秒值)
         */

        //判断
        //public boolean isDirectory()    判断此路径名表示的File是否为文件夹
        //public boolean isFile()         判断此路径名表示的File是否为文件
        //public boolean exists()         判断此路径名表示的File是否存在
        //1.对文件进行判断
        File f1 = new File("D:\\JavaFileTest\\a.txt");
        System.out.println(f1.isDirectory());
        System.out.println(f1.isFile());
        System.out.println(f1.exists());
        //2.对文件夹进行判断
        System.out.println("------------------------");
        File f2 = new File("D:\\JavaFileTest\\aaa");
        System.out.println(f2.isDirectory());
        System.out.println(f2.isFile());
        System.out.println(f2.exists());
        //3.对不存在路径进行判断
        System.out.println("------------------------");
        File f3 = new File("D:\\JavaFileTest\\abc");
        System.out.println(f3.isDirectory());
        System.out.println(f3.isFile());
        System.out.println(f3.exists());



        //获取
        System.out.println("------------------------");

        //public long length()            返回文件的大小(字节数量)
        System.out.println("------------------------");
        System.out.println(f1.length());
        //注意:这个方法只能获取文件的大小,单位是字节
        //如果单位是M、G,可以不断除1024
        System.out.println(f2.length());
        //无法获取文件夹的大小
        //如果要获取文件夹的大小,需要把文件夹中的所有文件大小累加在一起

        //public String getAbsolutePath() 返回文件的绝对路径
        System.out.println("------------------------");
        System.out.println(f1.getAbsoluteFile());
        System.out.println(f2.getAbsoluteFile());
        //这里在idea中此模块新建了一个文件a.txt
        File f4 = new File("file\\a.txt");
        System.out.println(f4.getAbsoluteFile());

        //public String getPath()         返回定义文件时使用的路径
        System.out.println("------------------------");
        System.out.println(f1.getPath());
        System.out.println(f2.getPath());
        System.out.println(f4.getPath());

        //public String getName()         返回文件的名称,带后缀
        System.out.println("------------------------");
        System.out.println(f1.getName());
        System.out.println(f2.getName());
        System.out.println(f4.getName());

        //public long lastModified()      返回文件的最后修改时间(时间毫秒值)
        System.out.println("------------------------");
        long lastModified1 = f1.lastModified();
        System.out.println(lastModified1);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        System.out.println(sdf.format(lastModified1));


    }
}
运行结果:

2.创建和删除

        这里仍然是在D盘中JavaFileTest文件中创建一个文件a.txt和一个文件夹aaa内容包括一个文件b.txt。

代码演示:
public class FileDemo3 {
    public static void main(String[] args) throws IOException {
        /*
        public boolean createNewFile()  创建一个新的空的文件
        public boolean mkdir()          创建单极文件夹
        public boolean mkdirs()         创建多级文件夹
        public boolean delete()         删除文件、空文件夹
         */

        //1.public boolean createNewFile()  创建一个新的空的文件
        //创建一个不存在的文件
        System.out.println("创建一个不存在的文件");
        File f1 = new File("D:\\JavaFileTest\\b.txt");
        boolean b1 = f1.createNewFile();
        System.out.println(b1);
        //创建一个已经存在的文件
        System.out.println("创建一个已经存在的文件");
        File f2 = new File("D:\\JavaFileTest\\a.txt");
        boolean b2 = f2.createNewFile();
        System.out.println(b2);
        //细节1:如果创建一个父级路径不存在的文件,那么会有异常IOException
        /*细节2:createNewFile方法创建的一定是文件,
        如果路径中不包含后缀名,则创建一个没有后缀的文件
         */

        System.out.println();
        //2.public boolean mkdir()          创建单极文件夹
        //创建已经存在的路径(包括已经创建的文件的路径)的文件夹
        System.out.println("创建已经存在的路径(包括已经创建的文件的路径)的文件夹");
        File f3 = new File("D:\\JavaFileTest\\aaa");
        boolean b3 = f3.mkdir();
        System.out.println(b3);
        //创建一个不存在的路径的文件夹
        System.out.println("创建一个不存在的路径的文件夹");
        File f4 = new File("D:\\JavaFileTest\\bbb");
        boolean b4 = f4.mkdir();
        System.out.println(b4);
        //创建一个多级文件夹
        System.out.println("创建一个多级文件夹");
        File f5 = new File("D:\\JavaFileTest\\aaa\\bbb\\ccc");
        boolean b5 = f5.mkdir();
        System.out.println(b5);

        System.out.println();
        //3.public boolean mkdirs()         创建多级文件夹
        System.out.println("创建多级文件夹");
        //细节:mkdirs方法既可以创建单极文件夹,又可以创建多级文件夹
        File f6 = new File("D:\\JavaFileTest\\aaa\\bbb\\ccc");
        boolean b6 = f6.mkdirs();
        System.out.println(b6);

        System.out.println();
        //4.public boolean delete()         删除文件、空文件夹
        //删除已存在文件
        System.out.println("删除已存在文件");
        boolean b7 = f1.delete();
        System.out.println(b7);
        //删除不存在的文件
        System.out.println("删除不存在的文件");
        File f8 = new File("D:\\JavaFileTest\\abcdefg");
        boolean b8 = f8.delete();
        System.out.println(b8);
        //删除有内容的文件夹
        System.out.println("删除有内容的文件夹");
        boolean b9 = f3.delete();
        System.out.println(b9);
        //删除空文件夹
        System.out.println("删除空文件夹");
        boolean b10 = f4.delete();
        System.out.println(b10);
    }
}
运行结果:

3.获取并遍历

        这里仍然是在D盘中JavaFileTest文件中创建一个文件a.txt和一个文件夹aaa内容包括一个文件b.txt。

代码演示:
public class FileDemo4 {
    public static void main(String[] args) {
        File f1 = new File("D:\\JavaFileTest");
        File[] files = f1.listFiles();
        for (File file : files) {
            System.out.println(file);
        }
    }
}
运行结果:

注意:

        1.当调用者File表示的路径不存在时,返回null

        2.当调用者File表示的路径是文件时,返回null

        3.当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组

        4.当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在FIle数组中返回

        5.当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在FIle数组中返回,包含隐藏文件

        6.当调用者File表示的路径是需要权限才能访问的文件夹时,返回null

获取并遍历还有其他一些方法,如下:

这些方法只需了解即可,重点掌握上述listFiles方法。

练习题:

先创建好文件和文件夹

JavaFileTest文件夹:

aaa文件夹:(只存储空文件夹ccc)

bbb文件夹:

练习一
        在当前模块下的aaa文件夹中创建一个a.txt
代码演示:
public class FileTest1 {
    public static void main(String[] args) throws IOException {
        File parent = new File("C:\\Users\\Han\\IdeaProjects\\file\\aaa");
        String name = "a.txt";
        File file = new File(parent,name);
        boolean b = file.createNewFile();
        System.out.println(b);
    }
}
运行结果:

 练习二
        定义一个方法找某一个文件夹中,是否有以.xls结尾的工作表
        (暂时不需要考虑子文件夹)

        

代码演示:
public class FileTest2 {
    public static void main(String[] args) {
        //对文件夹aaa判断
        File f1 = new File("D:\\JavaFileTest\\aaa");
        boolean b1 = existXls(f1);
        System.out.println(b1);

        //对文件夹bbb判断
        File f2 = new File("D:\\JavaFileTest\\bbb");
        boolean b2 = existXls(f2);
        System.out.println(b2);
    }

    //定义方法
    public static boolean existXls(File file) {
        //遍历
        File[] files = file.listFiles();
        if(files == null) {
            return false;
        }
        for (File f : files) {
            if(f.isFile() && f.getName().endsWith(".xls")) {
                return true;
            }
        }

        return false;
    }
}
运行结果:

 练习三
        找到电脑中所有以.xls结尾的工作表
        (需要考虑子文件夹)
代码演示:
public class FileTest3 {
    public static void main(String[] args) {
        File[] roots = File.listRoots();
        for (File root : roots) {// C:\  D:\
            ergodicFile(root);
        }
    }


    //遍历一个文件夹,并输出所有.xls文件
    public static void ergodicFile(File dir) {
        File[] files = dir.listFiles();
        if (files != null) {
            for (File file : files) {
                if(file.isDirectory()){
                    //如果是文件夹
                    ergodicFile(file);
                } else {
                    //如果是文件
                    String name = file.getName();
                    if(name.endsWith(".xls")) {
                        System.out.println(name);
                    }
                }
            }
        }
    }

}
运行结果:

 练习四
        删除一个多级文件夹
代码演示:
public class FileTest4 {
    public static void main(String[] args) {
        File f1 = new File("D:\\JavaFileTest\\aaa");
        deleteFile(f1);
    }
    //遍历一个文件夹,并删除所有文件
    public static void deleteFile(File dir) {
        File[] files = dir.listFiles();
        if (files != null) {
            for (File file : files) {
                if(file.isDirectory()){
                    //如果是文件夹
                    deleteFile(file);
                } else {
                    //如果是文件
                    file.delete();
                }
            }
        }
        dir.delete();
    }
}
运行结果:

        成功删除aaa多级文件夹

 练习五
        统计一个文件夹中每种文件的个数并打印
        (考虑子文件夹)
        打印格式如下:
          txt:2个
          doc:3个
          xls:1个
代码演示:
public class FileTest5 {
    static HashMap<String,Integer> hm = new HashMap<>();

    public static void main(String[] args) {
        File file = new File("D:\\JavaFileTest");
        getAllKindsOfFile(file);
        hm.forEach((key, count) -> System.out.println(key + ":" + count + "个"));
    }

    public static void getAllKindsOfFile(File src) {
        File[] files = src.listFiles();
        for (File file : files) {
            //遍历
            if(file.isFile()) {
                //是文件
                String name = file.getName();
                if(name.contains(".")) {
                    String[] arr = name.split("\\.");//单一个.表示任意字符,加上转义字符才表示.
                    String kind = arr[arr.length - 1];
                    if(hm.containsKey(kind)) {
                        //如果集合中已存在
                        hm.put(kind,hm.get(kind) + 1);
                    } else {
                        //如果集合中未存在
                        hm.put(kind,1);
                    }
                }
            } else {
                //是文件夹
                getAllKindsOfFile(file);
            }
        }

    }
}
运行结果:

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

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

相关文章

MGRE 实验

需求&#xff1a;1、R2为ISP&#xff0c;其上只能配置IP地址。 2、R1-R2之间为HDLC封装 3、R2-R3之间为ppp封装&#xff0c;pap认证&#xff0c;R2为主认证方。 4、R2-R4之间为ppp封装&#xff0c;chap认证&#xff0c;R2为主认证方。 5、R1、R2、R3构建MGRE环境&#xff0…

汽车之家,如何在“以旧换新”浪潮中大展拳脚?

北京车展刚刚落幕&#xff0c;两重利好正主导汽车市场持续升温&#xff1a;新能源渗透率首破50%&#xff0c;以及以旧换新详细政策进入落地期。 图源&#xff1a;中国政府网 在政策的有力指引下&#xff0c;汽车产业链的各个环节正经历着一场深刻的“连锁反应”。在以旧换新的…

STM32——GPIO输出(点亮第一个LED灯)

代码示例&#xff1a; #include "stm32f10x.h" // Device headerint main() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启时钟GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_InitSt…

【JAVA基础之Stream流】掌握Stream流

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1.Stream流 1.1 概述 2.2 常见方法 2.2.1 实现步骤 2.2.2 获取Stream的方式 2.2.3 中间方法 2.2.4 终结方法 1.Stream流 1.1 概述 Stream流可以让你通过链…

Spring AOP(2)

目录 Spring AOP详解 PointCut 切面优先级Order 切点表达式 execution表达式 切点表达式示例 annotation 自定义注解MyAspect 切面类 添加自定义注解 Spring AOP详解 PointCut 上面代码存在一个问题, 就是对于excution(* com.example.demo.controller.*.*(..))的大量重…

Cmake编译源代码生成库文件以及使用

在项目实战中&#xff0c;通过模块化设计能够使整个工程更加简洁明了。简单的示例如下&#xff1a; 1、项目结构 project_folder/├── CMakeLists.txt├── src/│ ├── my_library.cpp│ └── my_library.h└── app/└── main.cpp2、CMakeList文件 # CMake …

[机器学习系列]深入探索回归决策树:从参数选择到模型可视化

目录 一、回归决策树的参数 二、准备数据 三、构建回归决策树 (一)拟合模型 (二)预测数据 (三)查看特征重要性 (四)查看模型拟合效果 (五) 可视化回归决策树真实值和预测值 (六)可视化决策树并保存 部分结果如下&#xff1a; 一、回归决策树的参数 DecisionTreeRegress…

基于springboot+mybatis+vue的项目实战之增删改查CRUD

目录结构 PeotController.java package com.example.controller;import com.example.pojo.Peot; import com.example.pojo.Result; import com.example.service.PeotService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web…

分布式锁讲解

概括 分布式锁是一种用于在分布式系统中实现同步机制的锁。在单机系统中&#xff0c;我们可以使用如Java中的synchronized关键字或者 ReentrantLock来实现线程间的同步&#xff0c;但在分布式系统中&#xff0c;由于多个节点&#xff08;服务器&#xff09;之间的并发操作&am…

谷歌CEO最新访谈:AI浪潮仍处于早期阶段,公司未来最大威胁是执行力不足

作为搜索领域无可争议的霸主&#xff0c;谷歌改变了我们生活的方方面面&#xff0c;从日常琐事到工作事务&#xff0c;再到我们的沟通方式。多年来&#xff0c;谷歌一直是互联网的窗口&#xff0c;为我们提供大量知识和信息&#xff0c;但如今&#xff0c;随着其他类似平台的崛…

融知财经:期货交易的规则和操作方法

期货交易是指在未来的某一特定时期&#xff0c;买卖双方通过签订合约的方式&#xff0c;约定以某种价格买卖一定数量的某种商品或资产的行为。期货交易的规则和操作方法如下&#xff1a; 期货交易的规则和操作方法 1、双向交易&#xff1a; 期货市场允许投资者进行多头&#xf…

Chrono下载管理器:提升下载体验,有效管理文件

名人说&#xff1a;莫愁千里路&#xff0c;自有到来风。 ——钱珝 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、介绍二、下载安装1、Chrome应用商店&#xff08;需科学&#xff09;2、第三方直链下载 三、使…

【密码守护者】让弱密码无处遁形,保护你的UOS系统安全!

欢迎点赞、关注、分享&#xff0c;后期将会有更多的工作小工具分享给大家&#xff0c;嘻嘻 密码&#xff0c;是守护我们数字世界的钥匙。一个强大、复杂的密码&#xff0c;能够有效地抵御黑客攻击和信息泄露的风险。但在日常使用中&#xff0c;许多人因为方便记忆而选择了简单易…

【Linux】yum与vim

文章目录 软件包管理器&#xff1a;yumLinux安装和卸载软件包Linux中的编辑器&#xff1a;vimvim下的底行模式vim下的正常模式vim下的替换模式vim下的视图模式vim下的多线程 软件包管理器&#xff1a;yum yum其实就是一个软件,也可以叫商店 和你手机上的应用商店或app store一…

Meta-SR: A Magnification-Arbitrary Network for Super-Resolution

CVPR2019https://github.com/XuecaiHu/Meta-SR-Pytorch 问题引入 首个解决任意尺度超分问题的模型&#xff0c;借鉴了meta-learning的思想&#xff1b;weight prediction strategy(meta-learning)&#xff1a;神经网络的权重是由另一个神经网络预测的&#xff0c;而不是通过从…

【16-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

【win10 文件夹数量和看到不一致查看隐藏文件已经打开,Thumb文件作妖】

目录 任务介绍&#xff1a;重命名规则修改前修改后 实现思路VB代码实现BUG犯罪现场&#xff08;眼见不一定为实&#xff09;破案1&#xff1a;抓顶风作案的反贼&#xff01;&#xff01;&#xff01;破案2&#xff1a;破隐身抓刺客&#xff01;&#xff01;&#xff01;杀器&am…

JavaWeb之Servlet(上)

前言 1. 什么是Servlet (1) Servlet介绍 (2) Servlet运行于支持Java的应用服务器中。 (3) Servlet工作模式&#xff1a; 2. Servlet API 3. 第一个Servlet (1) 创建一个类实现Servlet接口,重写方法。或继承HttpServlet亦可 (2) 在web.xml文档中配置映射关系 标签的执行…

书生浦语训练营第2期-第7节作业

一、基础作业 二、进阶作业

作为餐饮行业HR,怎么选择一套合适的HCM人事管理系统?

在餐饮业这个行业中&#xff0c;人员流动性较高&#xff0c;特别是对于服务员和厨师这类基层员工&#xff0c;招聘一直是一个难题。根据艾瑞数据测算&#xff0c;到2024年&#xff0c;中国餐饮行业的年收入将超过6万亿元&#xff0c;年复合增长率高达8.8%。作为餐饮企业的品牌战…