Java_File

介绍:

        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.mfbz.cn/a/607808.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

英伟达推出视觉语言模型:VILA

NVIDIA和MIT的研究人员推出了一种新的视觉语言模型(VLM)预训练框架&#xff0c;名为VILA。这个框架旨在通过有效的嵌入对齐和动态神经网络架构&#xff0c;改进语言模型的视觉和文本的学习能力。VILA通过在大规模数据集如Coy0-700m上进行预训练&#xff0c;采用基于LLaVA模型的…

三.Django--ORM(操作数据库)

目录 1 什么是ORM 1.1 ORM优势 1.2ORM 劣势 1.3 ORM与数据库的关系 2 ORM 2.1 作用 2.2 连接数据库 2.3 表操作--设置字段 2.4 数据库的迁移 写路由增删改查操作 项目里的urls.py: app里的views.py: 注意点: 1 什么是ORM ORM中文---对象-关系映射 在MTV,MVC设计…

2024面试自动化测试面试题【含答案】

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

若依框架dialog弹窗取消点击空白出关闭

如果想全局取消的话就找到main.js在里面加上下面的一行代码&#xff0c;添加完成之后记得清楚浏览器缓存重新加载js文件。 Element.Dialog.props.closeOnClickModal.default false;如果想指定某个弹窗取消点击空白处关闭&#xff0c;那么就找到那个弹窗加上。添加完毕之后刷新…

扩散模型~

推荐&#xff1a;write_own_pipeline.ipynb - Colab (google.com) 基本管道 一直显示NVIDIA有问题&#xff0c;所以就把.to("cuda")去掉了&#xff0c;使用Colab运行的&#xff0c;代码如下&#xff1a; from diffusers import DDPMPipelineddpm DDPMPipeline.fr…

哈希题目总结

以下列举了可以用哈希方法&#xff08;包括但不限于用HashMap和HashSet&#xff09;的题目&#xff0c;实质上是把东西丢给这些数据结构去维护。请注意有些题目中用哈希是最优解&#xff0c;有些题目中不是最优解&#xff0c;可以自行探索其时间复杂度和空间复杂度的区别&#…

java入门1.1.1版本

前言&#xff1a; 上面的内容是1.0.0~1.1的内容总结 秉持着先做再定义的理念&#xff0c;这里会带着大家先体验一下类与对象 第一步&#xff1a;新建一个java文件 鼠标右键 → 新建 → 文本文档 → 右键 → 点击重名 → 全选 → hello.java 第二步&#xff1a;用笔记本打开 …

阿里云开发uniapp之uni-starter

一、为什么使用uni-starter uni-starter是集成商用项目常见功能的、云端一体应用快速开发项目模版。 一个应用有很多通用的功能&#xff0c;比如登录注册、个人中心、设置、权限管理、拦截器、banner... uni-starter将这些功能都已经集成好&#xff0c;另外&#xff0c;uni-s…

2023-2024年SaaS行业报告合集(精选22份)

SaaS行业报告/方案&#xff08;精选21份&#xff09; 2023-2024年 报告来源&#xff1a;2023-2024年SaaS行业报告合集&#xff08;精选22份&#xff09; 【以下是资料目录】 2024中国HCM SaaS领导者竞争力持续增强的行业龙头 2024年中国企业级SaaS行业研究报告 2024年SaaS…

基于Transformer网络的多步预测模型

包括完整流程数据代码处理&#xff1a; 多步预测数据集制作、数据加载、模型定义、参数设置、模型训练、模型测试、预测可视化、多步预测、模型评估 ● 环境框架&#xff1a;python 3.9 pytorch 1.8 及其以上版本均可运行 ● 使用对象&#xff1a;论文需求、毕业设计需求者…

Offer必备算法37_记忆化搜索_五道力扣题详解(由易到难)

目录 记忆化搜索概念和使用场景 ①力扣509. 斐波那契数 解析代码1_循环 解析代码2_暴搜递归 解析代码3_记忆化搜索 解析代码4_动态规划 ②力扣62. 不同路径 解析代码1_暴搜递归&#xff08;超时&#xff09; 解析代码2_记忆化搜索 解析代码3_动态规划 ③力扣300. 最…

最详尽的网络安全学习路线!涵盖所有技能点,带你成为网安专家!

目录 零基础小白&#xff0c;到就业&#xff01;入门到入土的网安学习路线&#xff01; 建议的学习顺序&#xff1a; 一、夯实一下基础&#xff0c;梳理和复习 二、HTML与JAVASCRIPT&#xff08;了解一下语法即可&#xff0c;要求不高&#xff09; 三、PHP入门 四、MYSQL…

QX-mini51单片机学习---(4)蜂鸣器

目录 1蜂鸣器工作原理 2三极管工作原理 3本节相关原理图分析 4实践 1蜂鸣器工作原理 2三极管工作原理 我们这里使用PNP三极管&#xff0c;低电压导通 做开关 PNP E&#xff08;emitrer&#xff09;&#xff1a;发射极&#xff0c;B&#xff08;base&#xff09;&#x…

leetcode每日一题第七十二天

class Solution { public:TreeNode* searchBST(TreeNode* root, int val) {if(!root) return root;if(root->val val) return root;else if(root->val > val) return searchBST(root->left,val);else return searchBST(root->right,val);} };

WPF中页面加载时由于TreeView页面卡顿

示例&#xff1a;右侧界面的数据根据左侧TreeView的选项加载不同的数据&#xff0c;页面加载时会把所有的数据加载一遍&#xff0c;导致页面卡顿。 解决办法&#xff1a; <Setter Property"IsSelected" Value"{Binding IsSelected}"/>

初学python记录:力扣1652. 拆炸弹

题目&#xff1a; 你有一个炸弹需要拆除&#xff0c;时间紧迫&#xff01;你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k 。 为了获得正确的密码&#xff0c;你需要替换掉每一个数字。所有数字会 同时 被替换。 如果 k > 0 &#xff0c;将第 i 个数字用…

车载测试到底怎么样?真实揭秘!

什么是车载智能系统测试&#xff1f; 车载智能系统&#xff0c;是汽车智能化重要的组成部分&#xff0c;由旧有的车载资通讯系统结合联网汽车技术所演进而来&#xff0c;随着软硬件技术的不断进步&#xff0c; 让车载智能系统拥有强大的运算能力及多元化的应用功能。 车载智能…

FreeRTOS学习 -- 任务相关API函数

一、任务创建和删除API函数 FreeRTOS 最基本的功能就是任务管理&#xff0c;而任务管理最基本的操作就是创建和删除任务。 FreeRTOS的任务创建和删除API函数如下&#xff1a; 1、函数 xTaskCreate() 此函数用来创建一个任务&#xff0c;任务需要 RAM 来保存于任务有关的状…

【C语言项目】贪吃蛇(上)

个人主页 ~ gitee仓库~ 欢迎大家来到C语言系列的最后一个篇章–贪吃蛇游戏的实现&#xff0c;当我们实现了贪吃蛇之后&#xff0c;我们的C语言就算是登堂入室了&#xff0c;基本会使用了&#xff0c;当然&#xff0c;想要更加熟练地使用还需要多多练习 贪吃蛇 一、目标二、需要…

Windows远程桌面实现之十四:实现AirPlay接收端,让苹果设备(iOS,iPad等)屏幕镜像到PC端

by fanxiushu 2024-05-04 转载或引用请注明原始作者。 这个课题已经持续了好几年&#xff0c;已经可以说是很长时间了。 实现的程序是 xdisp_virt&#xff0c; 可以去github下载使用:GitHub - fanxiushu/xdisp_virt: xfsredir file system 一开始是基于测试镜像驱动的目的随便开…
最新文章