IO流之File类

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() -> 只可删除空目录!importantboolean 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目录有一个目录遍历到子文件/子目录就会调用一次方法@Overridepublic 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.txtD:\java\a\b\c\bb.txtD:\java\a\b\c\cc.xls*/File[] files = file.listFiles(new FileFilter() {@Overridepublic 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.xdnf.cn/news/146833.html

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

相关文章

【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

音频编辑软件Steinberg SpectraLayers Pro mac中文软件介绍

Steinberg SpectraLayers Pro mac是一款专业的音频编辑软件,旨在帮助音频专业人士进行精细的音频编辑和声音处理。它提供了强大的频谱编辑功能,可以对音频文件进行深入的频谱分析和编辑。 Steinberg SpectraLayers Pro mac软件特点 1. 频谱编辑&#xff…

基于SpringBoot的知识管理系统

目录 前言 一、技术栈 二、系统功能介绍 用户管理 文章分类 资料分类 文章信息 论坛交流 资料下载 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网信息的飞速发展,无纸化作业变成了一种趋势,针对这个问题开发一个…

Windows历史版本下载

1、微PE工具箱(非广告本人常用) 常用安装Windows系统的微PE工具 地址:https://www.wepe.com.cn/download.html 2、Windows系统下载地址(非微软官方) 地址:MSDN, 我告诉你 - 做一个安静的工具站 下载&…

SpringMVC的请求映射:路由请求的精准导航

SpringMVC的请求映射:路由请求的精准导航 SpringMVC是一个用于构建Web应用程序的强大框架,它提供了众多的特性和组件来简化开发过程。其中,请求映射是SpringMVC中的一个关键特性,用于将HTTP请求映射到具体的处理方法。本文将深入…

RocketMQ Dashboard说解

RocketMQ Dashboard 是 RocketMQ 的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。 介绍​ 功能概览​ 面板功能运维修改nameserver 地址; 选用 VIPChannel驾驶舱查看 …

基于SpringBoot的高校学科竞赛平台

目录 前言 一、技术栈 二、系统功能介绍 竞赛题库管理 竞赛信息管理 晋级名单管理 往年成绩管理 参赛申请管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步…

【信创】麒麟v10(arm)-mysql8-mongo-redis-oceanbase

Win10/Win11 借助qume模拟器安装arm64麒麟v10 前言 近两年的国产化进程一直在推进,基于arm架构的国产系统也在积极发展,这里记录一下基于麒麟v10arm版安装常见数据库的方案。 麒麟软件介绍: 银河麒麟高级服务器操作系统V10 - 国产操作系统、银河麒麟、中…

redis解压+windows安装+无法启动:1067

Redis下载安装图文教程(Windows版_超详细) 标题若遇到安装后无法启动:1067 排查方法如下: 1.查询是否有服务占用端口 查看6379的端口也没有被占用(netstat -ano | findstr :6379) 若有,kill掉…

【Linux】IO操作

IO 典型 IO 模型阻塞 IO非阻塞 IO信号驱动 IO异步 IO常见问题 多路转接模型select 模型poll 模型epoll 模型 典型 IO 模型 IO 操作指的就是数据的输入输出操作;IO 过程可以分为两个步骤:等待 IO 就绪、数据拷贝 阻塞 IO 发起 IO 操作,若当…

UE5 虚幻引擎 详解蓝图通信 必备的知识技能之一!!!

目录 0 引言1 直接蓝图通信1.1 在关卡蓝图中直接拖拽Actor1.2 Get Actor of Class/Get All Actors of Class 2 事件分发器2.1 创建事件分发器2.2 绑定事件分发器2.3 调用事件分发器 3 蓝图接口3.1 使用步骤3.2 为什么要使用蓝图接口 4 蓝图转换 0 引言 问题:为什么需…

图像处理与计算机视觉--第四章-图像滤波与增强-第一部分

目录 1.灰度图亮度调整 2.图像模板匹配 3.图像裁剪处理 4.图像旋转处理 5.图像邻域与数据块处理 学习计算机视觉方向的几条经验: 1.学习计算机视觉一定不能操之过急,不然往往事倍功半! 2.静下心来,理解每一个函数/算法的过程和精髓&…

Vue中如何进行图表绘制

Vue中的图表绘制:数据可视化的艺术 数据可视化是现代Web应用程序的重要组成部分之一。Vue.js作为一种流行的JavaScript框架,提供了许多强大的工具和库,用于在前端应用程序中创建各种图表和数据可视化。本文将深入探讨在Vue中进行图表绘制的方…

怒刷LeetCode的第16天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:迭代 方法二:模拟 方法三:循环模拟 方法四:传递 第二题 题目来源 题目内容 解决方法 方法一:回溯 方法二:枚举优化 第三题 题目来源 题目…

差分放大器的精髓:放大差模信号 抑制共模信号

参考如图基本的差分放大电路,在R1R2 R3R4的条件下,其输出与输入的关系为 : 具体推导过程参考:差分运算放大器的放大倍数的计算及结论_正在黑化的KS的博客-CSDN博客 由这个式子我们可以发现,差分放大器放大的是同相端与…

stable diffusion和gpt4-free快速运行

这是一个快速搭建环境并运行的教程 stable diffusion快速运行gpt快速运行 包含已经搭建好的环境和指令,代码等运行所需。安装好系统必备anaconda、conda即可运行。 stable diffusion快速运行 github: AUTOMATIC1111/稳定扩散网络UI:稳定扩散网页用户界…

STL upper_bound和lower_bound函数

声明&#xff1a; 首先包含头文件#include<algorithm> 这里的两个函数所运用的对象必须是非递减的序列&#xff08;也就是数组&#xff0c;数组必须是非递减的&#xff09;&#xff0c;只有这样才可以使用upper_bound和lower_bound这两个函数。 还有一点&#xff0c;就…

(七)Flask之路由转换器

引子&#xff1a; from flask import Flaskapp Flask(__name__)# 通过使用<int>转换器&#xff0c;可以捕获URL中的整数值&#xff0c;并将其作为参数传递给视图函数。 app.route(/index/<int:nid>, methods[GET, POST]) def index(nid):print(nid)return Indexi…

软件测试之Python基础学习

目录 一、Python基础 Python简介、环境搭建及包管理 Python简介 环境搭建 包管理 Python基本语法 缩进(Python有非常严格的要求) 一行多条语句 断行 注释 变量 基本数据类型(6种) 1. 数字Number 2. 字符串String 3. 列表List 4. 元组Tuple 序列相关操作方法 …