File及典型案例

File

File对象表示一个路径,可以是文件的路径,也可以是文件夹的路径

这个路径可以是存在的,也允许不存在

常见的构造方法

        图来自黑马程序员网课

package com.lazyGirl.filedemo;

import java.io.File;

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

        String str = "E:\\bishe\\paper1\\SignalToNoisy\\a.txt";
        File file = new File(str);
        System.out.println(file);

        String parent = "E:\\bishe\\paper1\\SignalToNoisy";
        String child = "a.txt";
        File file1 = new File(parent, child);
        System.out.println(file1);

        File file2 = new File(parent + "\\" + child);
        System.out.println(file2);
        
        File parent2 = new File(parent);
        String child2 = "a.txt";
        File file3 = new File(parent, child2);
        System.out.println(file3);

    }
}

        输出:

 绝对路径是带盘符的,相对路径是不带盘符的,默认到当前项目下去找

常见成员方法

                图来自黑马程序员网课 

        

package com.lazyGirl.filedemo;

import java.io.File;

public class Demo2 {
    public static void main(String[] args) {
        File file1 = new File("E:\\bishe\\paper1\\SignalToNoisy");
        System.out.println(file1.exists());
        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());

        System.out.println();
        File file2 = new File("E:\\bishe\\paper1\\SignalToNoisy");
        System.out.println(file2.exists());
        System.out.println(file2.isDirectory());
        System.out.println(file2.isFile());

        System.out.println();
        File file3 = new File("E:\\bishe\\paper1\\SignalToNoisy\\10x_lymph_node_group_14_normalize.jpg");
        System.out.println(file3.exists());
        long len = file3.length();
        System.out.println(len);//单位字节

        System.out.println();
        File file4 = new File("E:\\bishe\\paper1\\SignalToNoisy");
        System.out.println(file4.exists());
        long len2 = file4.length();//无法获取文件夹大小
        System.out.println(len2 / 1024 / 1024);

        System.out.println();
        File file5 = new File("E:\\bishe\\paper1\\SignalToNoisy\\10x_lymph_node_group_14_normalize.jpg");
        String path1 = file5.getAbsolutePath();
        System.out.println(path1);

        System.out.println();
        File file6 = new File(path1);
        System.out.println(file6.getPath());

        System.out.println();
        File file7 = new File("E:\\bishe\\paper1\\SignalToNoisy\\a.txt");
        System.out.println(file7.getName());

        System.out.println();
        File file8 = new File("E:\\bishe\\paper1\\SignalToNoisy\\");
        System.out.println(file8.getName());

        System.out.println();
        File file9 = new File(path1);
        System.out.println(file9.lastModified());

    }
}

        输出:

 

                图来自黑马程序员网课 

package com.lazyGirl.filedemo;

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

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

        File file = new File("a.txt");

        //该方法创建的是文件,如果路径中不包括后缀名,则创建一个没有后缀的文件
        System.out.println(file.createNewFile());

        File file2 = new File("\\aaa");

        //既可以创建单级文件也可以创建多级文件
        System.out.println(file2.mkdirs());

        //若删除的是文件,则直接删除
        //若删除的是空文件夹,则直接删除,不走回收站,若是有内容的文件夹,则删除失败
        file.delete();
        file2.delete();


    }
}

        输出:

        图来自黑马程序员网课

         注意:

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

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

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

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

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

        

package com.lazyGirl.filedemo;

import java.io.File;

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

        File file = new File("E:\\bishe\\paper1\\SignalToNoisy");

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

        输出:

 

        图来自黑马程序员网课 

package com.lazyGirl.filedemo;

import java.io.File;
import java.io.FilenameFilter;

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

//        File[] arr = File.listRoots();
//        for (File f : arr) {
//            System.out.print(f + " ");
//        }
//        System.out.println();
//        System.out.println();
//
//        File file = new File("D:\\");
//        String[] files = file.list();
//        for (String s : files) {
//            System.out.println(s + " ");
//        }
//        System.out.println();

        File file1 = new File("D:\\");

        //文件名过滤器
        String[] files1 = file1.list(new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {
                File f = new File(dir, name);
                return f.isFile() && name.endsWith(".txt");
            }
        });
        for (String s : files1) {
            System.out.println(s + " ");
        }

    }
}
package com.lazyGirl.filedemo;

import java.io.File;

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

        File f = new File("D:\\");
        File[] files = f.listFiles();
        for (File file : files) {
            if (file.isFile() && file.getName().endsWith(".txt")){
                System.out.println(file);
            }
        }
    }
}

删除级联文件夹

package com.lazyGirl.filedemo;

import java.io.File;

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

        File file = new File("immutable\\aaa");
        deleteFile(file);


    }
    public static void deleteFile(File f) {
        File[] files = f.listFiles();
        for (File file : files) {
            if (file.isFile()) {
                file.delete();
            }else {
                deleteFile(file);
            }
        }
        f.delete();
    }
}

        求特定文件夹下文件的个数:

package com.lazyGirl.filedemo;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class Test3 {
    public static void main(String[] args) {
        File file = new File("E:\\bishe");
        HashMap<String,Integer> hm = getCount(file);
        System.out.println(hm);


    }

    public static HashMap<String, Integer> getCount(File file){

        HashMap<String,Integer> map = new HashMap<>();
        File[] files = file.listFiles();
        if(files != null){
            for (File file1 : files) {
                if (file1.isFile()){
                    String[] arr = file1.getName().split("\\.");
                    if (arr.length == 2){
                        String endName = arr[arr.length-1];
                        if (map.containsKey(endName)){
                            map.put(endName, map.get(endName)+1);
                        }else {
                            map.put(endName, 1);
                        }
                    }
                }else {
                    HashMap<String,Integer> sonMap = getCount(file1);
                    for (String s : sonMap.keySet()) {
                        if (map.containsKey(s)){
                            map.put(s, map.get(s)+sonMap.get(s));
                        }else {
                            map.put(s, sonMap.get(s));
                        }
                    }
                }
            }
        }
        return map;
    }
}

输出:

 

 

 

 

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

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

相关文章

小程序开发,网站搭建,手机app开发,管理系统开发

小程序开发&#xff0c;网站搭建&#xff0c;手机app开发&#xff0c;管理系统开发

grpc代理服务的实现(一)

最近公司需要无感知基于服务代号来实现通信, 并监控和管理通信连接&#xff0c;目前公司使用的是如下的逻辑(当然逻辑简化了&#xff0c;但是思想不变) 目录 简单的原理图代理服务的实现创建 tls tcp 服务, 用于grpc client 和 grpc service 通信保存 与 代理服务建立的 grpc …

Java多线程编程与并发处理

引言 在现代编程中&#xff0c;多线程和并发处理是提高程序运行效率和资源利用率的重要方法。Java提供了丰富的多线程编程支持&#xff0c;包括线程的创建与生命周期管理、线程同步与锁机制、并发库和高级并发工具等。本文将详细介绍这些内容&#xff0c;并通过表格进行总结和…

建议收藏!AIGC绘画基础,Midjourney风格码style reference code策展汇总合集

自打Midjourney推出风格码style reference code以来&#xff0c;各路大神都在积极“挖矿”&#xff0c;不断地使用sref random后缀参数来寻找不同风格。 得益于Midjourney爱好者们“分布式挖矿”的力量&#xff0c;很多Midjourney风格被测试出来。我已经把前1000个风格码看了一…

R语言绘制三变量分区地图

参考资料&#xff1a; https://mp.weixin.qq.com/s/5c7gpO2mJ2BqJevePJz3CQ tricolore包教程&#xff1a;https://github.com/jschoeley/tricolore 学习笔记&#xff1a;Ternary choropleth maps 1、测试实例 代码&#xff1a; library(ggplot2) library(rnaturalearthdata) …

使用ant-design/cssinjs向plasmo浏览器插件的内容脚本content中注入antd的ui组件样式

之前写过一篇文章用来向content内容脚本注入antd的ui&#xff1a;https://xiaoshen.blog.csdn.net/article/details/136418199&#xff0c;但是方法就是比较繁琐&#xff0c;需要将antd的样式拷贝出来&#xff0c;然后贴到一个单独的css样式文件中&#xff0c;然后引入到内容脚…

Apple - Metal Programming Guide

本文翻译整理自&#xff1a;Metal Programming Guide&#xff08;更新日期&#xff1a;2016-12-12 https://developer.apple.com/library/archive/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP400142…

next.js开发中页面回退时报Unhandled Runtime ErrorTypeError destroy is not a function

Next.js开发中页面回退时报Unhandled Runtime Error:TypeError: destroy is not a function 问题描述 在Next.js开发中&#xff0c;从A页面跳转到B页面&#xff0c;再使用浏览器回退到A页面时报上述错误&#xff1a; 错误原因 是因为在B页面里&#xff0c;在使用useEffect时…

从“数据孤岛”、Data Fabric(数据编织)谈逻辑数据平台

提到逻辑数据平台&#xff0c;其核心在于“逻辑”&#xff0c;与之相对的便是“物理”。在过去&#xff0c;为了更好地利用和管理数据&#xff0c;我们通常会选择搭建数据仓库和数据湖&#xff0c;将所有数据物理集中起来。但随着数据量、用数需求和用数人员的持续激增&#xf…

掌握midjourney系列:8 个角色设计关键词

Midjourney V6的角色引用功能非常强大&#xff0c;可以让多张图片生成的角色风格保持一致。在实现同一角色的多张场景图片之前&#xff0c;我们需要先设计好基础角色。 以下是我总结的Midjourney中人物设计套路的常用提示&#xff0c;很高兴与大家分享。 1、角色设定表&#…

南京威雅学校:初中转轨国际化教育,她们打开了成长的另一种可能

“上了大学就轻松了。” 又是一年高考季&#xff0c;每每回想起十八岁前那些没日没夜埋头学习的日子&#xff0c;已经为人父母的你是不是也忍不住想要孩子气地吐槽一句&#xff0c;“骗人”——人不会在一场考试后瞬间长大&#xff0c;试卷里也没有人生的全部答案。 三年前&a…

Java-多线程

概念 进程&#xff1a;程序的基本执行实体 线程&#xff1a;操作系统能够进行运算调度的最小单位&#xff0c;被包含在进程之中&#xff0c;是进程的实际运作单位 并发&#xff1a;同一时刻&#xff0c;多个指令在单个CPU上交替执行。 并行&#xff1a;同一时刻&#xff0c;多…

博物馆藏品管理的重要性

博物馆是人们了解历史文化、传承文明的重要场所。而博物馆的藏品管理是博物馆的核心工作之一&#xff0c;对于展现博物馆的魅力、吸引观众的眼球有着至关重要的影响。并且博物馆藏品管理是一项复杂且专业的工作&#xff0c;它涉及到多个方面&#xff0c;包括但不限于藏品的收集…

前沿重器[49] | 聊聊搜索系统2:常见架构

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

Unity 踩坑记录 用自定义类 创建的List不显示在 inspector面板

在 自定义类上面添加 【Serializable 】 扩展&#xff1a; 1&#xff1a;Serializable 序列化的是可序列化的类或结构。并且只能序列化非抽象非泛型的自定义的类 2&#xff1a;SerializeField是强制对私有字段序列化

单例模式、工厂模式 c++关键字 static

static 关键字的作用&#xff1a; 主要作用在于 控制变量或函数的作用域、生命周期以及它们如何被不同部分的程序访问&#xff0c;从而帮助程序员管理内存、避免命名冲突&#xff0c;并实现特定的设计模式&#xff08;如单例模式&#xff09;。 1. 静态局部变量&#xff1a;当…

工具推荐-文件捆绑工具

前提 在之前有突发奇想过&#xff0c;有没有那种我发给别人一个pdf文件&#xff0c;别人点击后看到的是pdf文件的内容&#xff0c;我这边也看到了上线的提示。于是就去研究pdf能加入哪些特殊的功能。看了一段时间后发现pdf的一些不一样的功能 像是打开pdf后弹出一个框 或者是…

什么是端口转发?路由器如何正确的设置端口转发和范围转发?(外网访问必备设置)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 端口转发 📒🚀 端口转发的应用场景💡 路由器如何设置端口转发(示例)💡 端口范围转发(示例)🎯 范围转发的应用场景🛠️ 设置范围转发📝 范围转发实操示例🎈 注意事项 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 …

wmv转换mp4怎么操作?3个格式转换方法分享

wmv转换mp4怎么操作&#xff1f;将WMV转换为MP4格式&#xff0c;可以方便我们在多种设备和平台上流畅播放视频。MP4格式具有广泛的兼容性和优化过的编码&#xff0c;使其在各种媒体播放器、智能手机、平板电脑以及电视上都能得到良好的支持。此外&#xff0c;MP4格式的视频文件…

手机直播不用麦克风可以吗?一文看懂无线麦克风哪个好

市面上对于无线麦克风的需求有增无减&#xff0c;原因是直播、短视频行业火爆&#xff0c;许多人都开始加入这一行业&#xff0c;不过对于麦克风这类产品的疑问也越来越多。例如&#xff1a;无线麦克风怎么选&#xff1f;实不实用&#xff1f;手机直播不用麦克风可以吗&#xf…