IO流之File类

news2024/11/28 0:33:53

File类

File 对应的硬盘上的文件或者文件夹

位于java.io包下

File对文件/文件夹进行操作,但是无法对文件内容进行操作,读取/写入不可以操作,但是可以创文件夹/读取文件路径,IO流才可以进行操作

文件/文件夹的路径:linux使用/作为文件分割符,但是windows使用\作为文件分割符,java中可以处理文件分割符,支持多平台!!但是用 \ 时,由于在java中\作为转移符号,所以使用双杠\\,或者使用这个:

 使用File类

        //不推荐写法
        //File file = new File("D:\\实验室\\七龙珠.txt");

        //推荐写法  绝对路径写法
        File file = new File("D:/java");
        File file11 = new File("D:/实验室");

        //推荐写法二
        File file1  = new File("D:/实验室","七龙珠.txt");

        File file2 = new File(file11,"七龙珠.txt");
        //File不会检查文件/目录是否存在 但是File对象依旧可以存在

        File file4 = file.getAbsoluteFile();
        //判断文件是否存在
        System.out.println(file2.exists());

        //获取绝对路径
        System.out.println(file.getAbsoluteFile());

        //不同对象,指向同一个文件
        System.out.println(file4);
        System.out.println(file);
        //File file1  = new File("D:/实验室","七龙珠.txt");
        //File file4 = file.getAbsoluteFile();
        System.out.println("file与file4是否相等"+(file == file4));

        //获取文件名
        String name = file.getName();
        System.out.println("文件名:"+name);

        //获取上级目录路径
        File parentFile = file.getParentFile();
        System.out.println("上级目录:"+parentFile);

        //返回文件的字节大小
        System.out.println("文件的字节大小:"+file.length());//单位是字节

        //返回抽象路径名表示的文件上次修改的时间  -> 返回的是日期的毫秒值
        System.out.println("文件上次修改的时间:"+file.lastModified());

        //创建一个文件
        if(!file.exists()){
            try {
                file.createNewFile();
                System.out.println("文件创建成功");
            } catch (IOException e) {
                //如果上机目录不存在就会有错误 创建不了对应的文件
                e.printStackTrace();
            }
        }

        //创建文件夹  mkdir只创建本机目录,如果上级不存在,不能创建
        File file5 = new File("D:/java/a");
        boolean mkdir = file5.mkdir();
        System.out.println("目录是否创建成功:" + mkdir);
        //对于mkdirs,不同于mkdir 会把不存在的上级目录帮你创建
        File file6 = new File("D:/java/a/b/c");
        boolean mkdirs = file6.mkdirs();
        System.out.println("是否创建成功:" + mkdirs);

        //删除文件或者目录
        //delete() -> 只可删除空目录!important
        boolean delete1 = file6.delete();
        System.out.println("文件是否删除:" + delete1);

        //判断是一个文件还是文件夹 true是一个文件 false表示不是文件
        file.isFile();
        file.isDirectory();

        //重命名
        //file.renameTo();
 //目录的遍历
        /*File file = new File("D:/java/a/b");//得到对应的子文件,目录的名字
        String[] Filename = file.list();
        for(String filename:Filename){
            System.out.println(filename);
        }*/
        //筛选得到.txt结尾的文件
        File file = new File("D:/java/a/b/c");//得到对应的子文件,目录的名字
        String[] Filename = file.list(new FilenameFilter() {
            //b目录有一个目录遍历到子文件/子目录就会调用一次方法
            @Override
            public boolean accept(File dir, String name) {
                //dir:表示目录的路径
//                System.out.println("dir:"+dir);
//                //name:当前目录的子文件和子目录名字
//                System.out.println("name:"+name);
//                return true;//false就是为了筛选子文件,子目录  true就是返回这个文件
                File subFile = new File(dir,name);
                return name.endsWith(".txt") && subFile.isFile();
            }
        });
        for(String filename:Filename){
            System.out.println(filename);
        }
        //遍历得到子文件 子目录File对象
//        File[] files = file.listFiles();
//        for (File file1: files) {
//            System.out.println(file1.getParentFile()+"\\"+file1.getName());
//        }
        /*D:\java\a\b\c\aa.txt
        D:\java\a\b\c\bb.txt
        D:\java\a\b\c\cc.xls*/

        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".txt") && pathname.isFile();
            }
        });
        for (File file1 : files) {
            System.out.println(file1);
        }

 方法递归

方法内部调用自己,也是一个循环,但是递归的胜读不能太深,循环次数不能太多,不然效率很低,如果能够使用循环就尽量使用循环

    long rs = func(7);
    System.out.println(rs);

}
public static long func(int n){
    if(n == 1 || n == 2) return 1;
    return func(n - 1) + func(n - 2);
}

 使用递归遍历某个目录下的所有的文件和目录

public static void main(String[] args) {
        func(new File("D:/java/a"));
    }
    public static void func(File path){
        if (path.isFile()){//是文件的话
            System.out.println("因为你只是一个文件:不是目录给你返回->"+path.getName());
        }else{//是目录的话
            System.out.println("文件夹:"+path.getName());
            File[] files = path.listFiles();//得到所有的子文件,然后开始遍历
            for (File file : files) {
                /*if(file.isFile()){
                    System.out.println("因为你只是一个文件:不是目录给你返回->"+path.getName());
                }else{
                    File[] files1 = path.listFiles();
                }*/
                //调用自己即可
                func(file);
            }
        }
    }

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

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

相关文章

【剑指Offer】8.二叉树的下一个结点

题目 给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节…

SSM 中的拦截器(Interceptor):作用与实现原理

SSM 中的拦截器(Interceptor):作用与实现原理 拦截器(Interceptor)是 Spring 框架中的一个重要组件,也在 Spring Spring MVC MyBatis(SSM)等框架中起到了关键作用。本文将深入探讨…

阿里云关系型数据库RDS详细说明

阿里云RDS关系型数据库大全,关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,阿里云百科分享阿里云RDS关系型数据库大全: 目录 阿里云RDS关系型数据库大全 …

基于Java的在线课程教程计划管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

已解决: Go Error: no Go files in /path/to/directory问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

我的第一个react.js 的router工程

react.js 开发的时候,都是针对一个页面的,多个页面就要用Router了,本文介绍我在vscode 下的第一个router 工程。 我在学习react.js 前端开发,学到router 路由的时候有点犯难了。经过1-2天的努力,终于完成了第一个工程…

【JUC并发编程--java线程】

文章目录 1. 线程1.1 线程的使用线程运行原理 1. 线程 1.1 线程的使用 方法一,直接使用 Thread: 方法二,使用 Runnable 配合 Thread: 把【线程】和【任务】(要执行的代码)分开 Thread 代表线程Runnabl…

mac系统占用内存太大怎么办?

Mac的内存大小有限,一旦运行软件太多,会导致Mac无法打开软件或者电脑卡顿,那么Mac系统占用内存过大怎么有效清理呢?本期小编就来帮大家看看当系统占用内存太大的时候应该怎么办 mac系统占用内存过大怎么清理 Mac的内存大小决定了…

网络工程师是安装摄像头的吗

大家好,我是网络工程师成长日记实验室的郑老师,您现在正在查看的是网络工程师成长日记专栏,记录网络工程师日常生活的点点滴滴 有个同学说他现在本科毕业去了一家公司,规模不大。他说只有14个人上社保的。这家公司主要是安装网络摄…

需求放缓、价格战升级、利润率持续恶化对小鹏汽车造成了严重影响

来源:猛兽财经 作者:猛兽财经 收入和每股收益不及预期,亏损创记录 财报显示,小鹏汽车(XPEV)2023年第二季度收入为50.6亿元人民币(合7亿美元),略低于预期,而且还产生了比预期更大的亏…

EasyEdge 智能边缘控制台通过sdk发布应用

离线部署SDK生成 模型部署完成后会出现下载SDK的按钮,点击按钮下载SDK并保存好SDK。 进入EasyDL官网的技术文档 安装智能边缘控制台 跟着教程,完成安装:点此链接 树莓派4b是Linux arm64的架构,点击对应的链接进行下载。 下载完成…

【深入了解Java String类】

目录 String类 常用方法 字符串的不可变性 String的内存分析 StringBuilder类 解释可变和不可变字符串 常用方法 面试题:String,StringBuilder,StringBuffer之间的区别和联系 String类的OJ练习 String类 【1】直接使用&#xff0c…

【FreeRTOS】FreeRTOS移植stm32详细步骤介绍

我在查找FreeRTOS移植的相关教程特别少,所以想非常详细的介绍FreeRTOS移植stm32详细步骤,包括源码的下载,源码介绍,系统移植,代码验证等,每一步都有对应的介绍和解释,希望可以帮助到你们。 文章…

【VINS】苹果手机采集单目相机+IMU数据离线运行VINS-Mono

0.准备工作 开个新坑,之前用Android手机做过离线采集数据的实验,这次用IPhone来测试! 1.虚拟机配置Mac OS 下载一个Mac OS 的ios镜像,打开虚拟机按照跟Ubuntu差不多的方式安装,但是发现没有Mac OS的入口。 因为VMwa…

字符函数、字符串函数和内存函数

朋友们,今天追秋给大家带来的是一些函数的介绍,包括字符函数、字符串函数和内存函数。 字符串函数 字符串函数分为以下几类: 1.长度不受限制的字符串函数:strlen;strcpy;strcat;strcmp; 2.长度受限制的字符串函数:strncpy;strncat;strncmp. 3.还有一些特…

【C++杂货铺】set 和 map 使用总结

文章目录 一、前言1.1 关联式容器1.2 键值对1.3 树型结构的关联式容器 二、set2.1 set的介绍2.2 set的使用2.2.1 set 的模板参数列表2.2.2 set 的构造2.2.3 set 的迭代器2.2.4 set 的容量2.2.5 set 修改操作2.2.6 set 的使用举例 三、multiset3.1 multiset 的介绍3.2 multiset …

C++goto语句

在本文中,您将了解goto语句,它是如何工作的,以及为什么应该避免它。在C 编程中,goto语句用于通过将控制权转移到程序的其他部分来更改程序执行的正常顺序。 goto语句的语法 goto label; ... .. ... ... .. ... ... .. ... label…

【C++】笔试训练(三)

目录 一、选择题二、编程题1、字符串中找出连续最长的数字串2、数组中出现次数超过一半的数字 一、选择题 1、以下程序的输出结果是&#xff08;&#xff09; #include <stdio.h> int main() {char a[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }, * p;int i;i 8;p a i;p…

【考研数学】高等数学第七模块 —— 曲线积分与曲面积分 | 3. 对面积的曲面积分(第一类曲面积分)

文章目录 二、曲面积分2.1 对面积的曲面积分&#xff08;第一类曲面积分&#xff09;2.1.1 问题引入 —— 曲面的质量2.1.2 对面积的曲面积分定义及性质2.1.3 对面积的曲面积分的计算法 写在最后 二、曲面积分 2.1 对面积的曲面积分&#xff08;第一类曲面积分&#xff09; 2…

小谈设计模式(12)—迪米特法则

小谈设计模式&#xff08;12&#xff09;—迪米特法则 专栏介绍专栏地址专栏介绍 迪米特法则核心思想这里的“朋友”指当前对象本身以参数形式传入当前对象的对象当前对象的成员变量直接引用的对象目标 Java程序实现程序分析 总结 专栏介绍 专栏地址 link 专栏介绍 主要对目…