最新要闻
- 贾跃亭憋了九年的车终于量产?结果 又一张大饼!
- 环球快报:四边等宽的鸿蒙手机来了!华为nova 11明天发
- 潍坊风筝节放飞打工人的心声:引发网友热议
- Intel鸡血驱动暴涨63%!Arc A750性价比秒杀RTX 3060 72%!
- 当前最新:天舟六号飞船、长征七号火箭抵达文昌!五次发射 100%成功
- 山东泰山队vs上海申花首发出炉:四外援先发,韩镕泽镇守球门
- 每日热讯!“泼水节被撕扯雨衣”女生发声:很崩溃
- 世界快报:众人狂欢!泼水节连狗路过都得淋两桶水再走
- 贝贝健电蚊香液到手14.9元:驱赶蚊虫神器 夏天必备
- 全球信息:超级SSD 21合一组成168TB!价格直奔20万元
- 焦点快报!女子花2万为猫移植鱼皮被网暴 本人:救治一半不可能放弃
- 全球热头条丨女子澄清妈妈做月嫂存款482万为虚构:觉得好玩就发了 现在很后悔
- 环球热文:养男三不碰,养女三讲究,教出来的孩子才能立足社会!
- 首发宁德时代麒麟电池 极氪009 ME版正式交付:根治续航焦虑
- 环球百事通!超智驾轿跑SUV!小鹏G6将亮相上海车展
- 2023年4月自考《人力资源管理(一)》真题答案汇总
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
热推荐:java -- File类和递归
(资料图片)
File类
java.io.File
类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。File类将文件,文件夹和路径封装成了对象,提供大量的方法来操作这些对象。
静态常量
// 静态常量static String pathSeparator // 与系统有关的路径分隔符// Window操作系统,分隔符是分号;// Linux操作系统,分隔符是冒号:static String separator // 与系统有关的名称分隔符// Window操作系统,名称分割符号为 \// Linux操作系统,名称分隔符号为 /
绝对路径和相对路径
- 绝对路径:从盘符(Windows)或"/"(Linux)开始的路径,这是一个完整的路径,绝对路径具有唯一性
- 相对路径:相对于某个目录的路径,这是一个便捷的路径,开发中经常使用,java中写的相对路径, 一般都是相对于当前项目
// Windows绝对路径 WindowsString path1 = "E:\\study\\java\\5_projects\\FileClass\\test";String path2 = "/opt/html/dist"// 相对路径String path3 = "FileClass\\test";
构造方法
public File(String pathname)// 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例public File(String parent, String child)// 从父路径名字符串和子路径名字符串创建新的 File实例public File(File parent, String child)// 从父抽象路径名和子路径名字符串创建新的 File实例
// 根据给定的路径 创建File对象File file1 = new File("E:\\study\\java\\5_projects\\FileClass\\test");System.out.println(file1.toString() + "\t " + file1.getPath());// 传入字符串的父路径 和 字符串的子路径 创建File对象File file2 = new File("E:\\study\\java\\5_projects\\FileClass","test");System.out.println(file2);File file3 = new File("E:\\study\\java\\5_projects","\\FileClass\\test");System.out.println(file3);// 传入File类型的父路径 和 字符串类型的子路径File file4 = new File(file1, "1.txt");System.out.println(file4);
注意:
- 一个File对象代表硬盘中实际存在的一个文件或者目录。
- 无论该路径下是否存在文件或者目录,都不影响File对象的创建。
获取某些属性
public File getAbsoluteFile() // 获取绝对路径(File类型)public String getAbsolutePath() // 获取绝对路径(字符串类型)public String getPath() // 返回字符串类型的路径public String getName() // 获取文件名public long length() // 获取文件字节数, 不存在返回0public File getParentFile() //返回File类型的父路径public long lastModified() // 返回最后修改时间
// 获取绝对路径(字符串类型)System.out.println("绝对路径为: " + new File("FileClas\\src").getAbsoluteFile());System.out.println(file4.getAbsolutePath());// 获取绝对路径(File类型)System.out.println(file4.getAbsoluteFile());// 获取相对路径下的File对象File file6 = new File("FileClass" + File.separator + "test" + File.separator + "2.txt");System.out.println(file6.getAbsolutePath());// 获取字符串类型的路径 直接打引结果相同// 直接打印(toString)调用了getPath方法System.out.println(file1.getPath());// 获取文件名System.out.println(new File("FileClass/test/1.txt").getName());// 获取文件字节数, 不存在返回0long fileLength = new File("FileClass/test/1.txt").length();System.out.println(fileLength);// 获取父路径, 返回File对象File parentFile = new File("FileClass/test/1.txt").getParentFile();System.out.println(parentFile);System.out.println(parentFile.getParentFile());// 获取最后修改时间long lastModifyTime = new File("FileClass/test/1.txt").lastModified();System.out.println(lastModifyTime + "\t" + new Date(lastModifyTime));
判断的方法
public boolean exists()// 判断路径是否存在, 存在返回truepublic boolean isFile()// 判断是否为文件 文件返回true, 目录返回false, 路径不存在也返回falsepublic boolean isDirectory()// 判断是否为目录, 目录返回true, 文件返回false, 路径不存在也返回false
// 判断路径是否存在, 存在返回trueSystem.out.println(new File("FileClass/test/NewDir1").exists());// 判断是否为文件 文件返回true, 目录返回false, 路径不存在也返回falseSystem.out.println(file6.isFile());// 判断是否为目录, 目录返回true, 文件返回false, 路径不存在也返回falseSystem.out.println(new File("FileClass/test/NewDir1").isDirectory());// 因此 判断某文件是文件/文件夹时 要先判断路径是否存在if (file1.exists()) { if(file1.isFile()) { System.out.println("文件"); } else { System.out.println("目录"); }} else { System.out.println("文件不存在");}
创建和删除文件
public boolean createNewFile() throws IOException// 创建文件, 成功返回true, 存在则不创建public boolean mkdir()// 创建单级目录, 成功返回true, 存在则不创建public boolean mkdirs()// 创建单/多级目录, 成功返回true, 存在则不创建public boolean delete()// 删除文件或空目录, 成功返回true
// 创建文件, 成功返回true, 失败返回falseSystem.out.println(file6.createNewFile());// 创建目录, 成功返回true, 失败返回falseSystem.out.println(new File("FileClass/test/NewDir1").mkdir());System.out.println(new File("FileClass/test/NewDir2/NewDir3/NewDir4").mkdirs());// 删除文件 和 空目录System.out.println(file6.delete());System.out.println(new File("FileClass/test/NewDir1").delete());// 创建目录//StringBuilder sb = new StringBuilder("FileClass/test/");//for (int i = 0; i < 200; i++) {// sb.append(i);// sb.append("/");//}//System.out.println(new File(sb.toString()).mkdirs());////删除目录//File fileForDel = new File(sb.toString());//do {// try {// if (Integer.parseInt(fileForDel.getName()) < 0) {// System.out.println("删除失败");// return;// }// } catch (NumberFormatException e) {// return;// }// fileForDel.delete();// fileForDel = fileForDel.getParentFile();//} while (true);
遍历目录
public String[] list()// 返回目录下所有文件 存放在字符串数组中public File[] listFiles()// 返回目录下所有文件 存放在File数组中
String[] arr = new File("FileClass/test").list();for (String s : arr) { System.out.println(s);}File[] fileArr = new File("FileClass/test").listFiles();for (File file : fileArr) { System.out.println(file + "\t" + file.getName());}
FileFilter接口
文件过滤器接口,此接口的实现类可以传递给方法listFiles(),实现文件的过滤功能public boolean accept(File path)
:方法参数就是listFiles()方法获取到的文件或者目录的路径。如果方法返回true,表示需要此路径,否则此路径将被忽略。
File dir = new File(".\\ConcurrentProgramming\\src\\_5_ThreadPool");File[] files = dir.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { //判断如果获取到的是目录,直接放行 if(pathname.isDirectory()) return true; //获取路径中的文件名,判断是否java结尾,是就返回true return pathname.getName().toLowerCase().endsWith("java"); }});for(File file : files){ System.out.println(file);}
递归
指在当前方法内调用自己的这种现象。
public static void a(){ a();}
递归求和
计算1 ~ n的和
分析:num的累和 = num + (num-1)的累和,所以可以把累和的操作定义成一个方法,递归调用。
实现代码:
public static void main(String[] args) { //计算1~num的和,使用递归完成 int num = 5; // 调用求和的方法 int sum = getSum(num); // 输出结果 System.out.println(sum);}public static int getSum(int num) { /* num为1时,方法返回1, 相当于是方法的出口,num总有是1的情况 */ if(num == 1){ return 1; } /* num不为1时,方法返回 num +(num-1)的累和 递归调用getSum方法 */ return num + getSum(num-1);}
递归求阶乘
阶乘:所有小于及等于该数的正整数的积。
分析:n的阶乘:n! = n * (n-1) ...3 * 2 * 1
//计算n的阶乘,使用递归完成public static void main(String[] args) { int n = 3; // 调用求阶乘的方法 int value = getValue(n); // 输出结果 System.out.println("阶乘为:"+ value);}public static int getValue(int n) { // 1的阶乘为1 if (n == 1) { return 1;} /* n不为1时,方法返回 n! = n*(n-1)! 递归调用getValue方法 */ return n * getValue(n - 1);}
目录遍历
遍历目录下的所有文件和所有的子目录。
分析:目录遍历,无法判断多少级目录,所以在遍历需要进行判断,如果遍历到的还是目录,就要使用递归,遍历所有目录。
public static void main(String[] args){ // 创建File对象 show(new File("./").getAbsoluteFile());}public static void show(File dir) { // 获取子文件和目录 File[] files = dir.listFiles(); // 循环打印 for (File file : files) { //判断是文件,直接输出 if (file.isFile()) { System.out.println(file); } else { // 是目录,继续遍历,形成递归 show(file); } }}
关键词:
热推荐:java -- File类和递归
贾跃亭憋了九年的车终于量产?结果 又一张大饼!
环球快报:四边等宽的鸿蒙手机来了!华为nova 11明天发
潍坊风筝节放飞打工人的心声:引发网友热议
Intel鸡血驱动暴涨63%!Arc A750性价比秒杀RTX 3060 72%!
当前最新:天舟六号飞船、长征七号火箭抵达文昌!五次发射 100%成功
山东泰山队vs上海申花首发出炉:四外援先发,韩镕泽镇守球门
每日热讯!“泼水节被撕扯雨衣”女生发声:很崩溃
世界快报:众人狂欢!泼水节连狗路过都得淋两桶水再走
贝贝健电蚊香液到手14.9元:驱赶蚊虫神器 夏天必备
全球信息:超级SSD 21合一组成168TB!价格直奔20万元
全球视点!扎实打牢数据结构算法根基,从此不怕算法面试系列之001 week01 02-01 什么是算法?
焦点快报!女子花2万为猫移植鱼皮被网暴 本人:救治一半不可能放弃
全球热头条丨女子澄清妈妈做月嫂存款482万为虚构:觉得好玩就发了 现在很后悔
环球热文:养男三不碰,养女三讲究,教出来的孩子才能立足社会!
世界信息:Air724UG开发板串口教程
首发宁德时代麒麟电池 极氪009 ME版正式交付:根治续航焦虑
环球百事通!超智驾轿跑SUV!小鹏G6将亮相上海车展
学系统集成项目管理工程师(中项)系列06b_信息系统安全管理(下)
【打怪升级】【微服务】聊聊微服务拆分设计
微头条丨《世界尽头的咖啡馆》-热衷于有意义的事,追求真我。
31-触发器01
2023年4月自考《人力资源管理(一)》真题答案汇总
卡普空更新出尔反尔:突然移除《生化危机2/3》Steam版光追
世界速看:奥利奥礼包到手39元:夹心饼干、巧脆卷全都有
环球看点!Vulnhub Fall Walkthrough
环球消息!苹果在线服务又出Bug:用户被迫反复输入Apple ID
每日视点!余承东罕见认错:还连甩五项重磅技术更新
《灌篮高手》赤木刚宪预告 大猩猩怒吼霸气登场
每日看点!Visual Studio Code开发常用的工具栏选项,查看源码技巧以及【vscode常用的快捷键】
环球快资讯丨也门和平进程迎来重要机遇
环球时讯:《流浪地球2》网播热度不减:上线后全网热度登顶
今日热文:深入理解 JVM ------ 调优案例分析与实战
观热点:1年内5名机车网红车祸身亡:靠摩托车来吸睛涨粉 已成“流量密码”
世界热点评!当心寄生虫!女生15元买15个螺肉疑为福寿螺 央视科普如何区分
FreeSWITCH添加iLBC编码及转码
世界最资讯丨负数有奇数和偶数吗_奇数和偶数是什么意思
华为鸿蒙HarmonyOS 4.0来了!余承东确定秋天发布
世界热点评!熊猫“蔓越煤”胡萝卜卡喉 饲养员海姆立克法施救:不愧是“生命的拥抱”
最新消息:《3D编程模式》写书-第3次记录
全球焦点!推荐给你让人震惊的网站集合
快看点丨迪士尼《小美人鱼》黑人鱼主演发声反对霸凌:要和我一样可爱
天天实时:国内首颗主动降水测量卫星成功发射!中国又拿下全球唯一
每日短讯:中国人民银行行长易纲会见印度尼西亚财长英卓华
【焦点热闻】使用 APT-mirror 四步配置 Ubuntu 本地软件仓库
环球快播:【见•闻】日本汽车界对合成燃料汽车赛道寄予厚望
最资讯丨超越“乔帮主” 库克成苹果任职时间最长的CEO
环球信息:存失速、起火风险!奔驰中国召回近25万辆汽车
天天滚动:清明过后教你美味简单的几道家常菜,好吃不容错过,上桌抢着吃
今亮点!14nm以上EDA工具国产化!华为:完成了软件/硬件开发78款工具的替代
每日热议!特斯拉降价是为打“价格战”?马斯克否认并透露原因
世界即时:女子鱼刺卡喉花1265元取出直呼贵!提醒:切勿自行处理
环球焦点!day01-Redis入门
销量大跌 资金链断裂!广汽本田一4S店老板“跑路”
坐燃油车从来不晕车 为何坐电动车很容易晕车?
每日精选:欧拉发布1080°女性安全架构:刹车自动增强、一键紧急呼救
环球要闻:华为4月17日首发全液冷超充架构 充电桩功率“遥遥领先”
今日视点:中国人自己的技术!比亚迪云辇-X实测:三个轮子行驶、过弯超平稳
今头条!卢拉访华:在国际外交舞台上演“王者归来”
预训练模型-从BERT原理到BERT调包和微调
【世界热闻】我的第一个项目(十) :处理全局变量(解决模块化后变量无法获取的问题)
【环球新视野】2023年Rust发展如何?
环球速看:可怕一幕!男子骑摩托车遭风筝线勒喉受伤 官方科普风筝线比刀还锋利
焦点信息:男子未悬挂号牌 竟是嫌老婆选的“250”车牌太丢人
【天天播资讯】为鼓励走出家门:韩国为宅男宅女每月发3400元补贴 网友直呼羡慕
世界热议:解决国产手机厂商5G卡脖子:国产射频滤波器搞定了 年产12万片项目落地
世界热头条丨女子吐槽领导隔监控点名员工加班 大家为工作不敢反抗:网友唏嘘
【世界聚看点】广东家常菜名字_广东家常菜
全球播报:socat的下载和基础使用
天天热文:比亚迪上海车展几号展台公布:比亚迪百万豪车在这里
当前焦点!2023LPL春季赛总决赛落幕 JDG 3:1击败BLG问鼎总冠军
全球最资讯丨宣传防盗、防电诈,送反诈螺蛳粉!柳州警方为企业守平安
【Visual Leak Detector】VS 中 VLD 输出解析
当前通讯!upload-labs writeup
每日视点!1克燃料等于8吨石油 日本明确首个核聚变战略:2050年发电
曝淄博酒店网上标价千元前台仅200元引热议:官方回应
全球关注:首发仅1899元!铁威马F4-423(4G)四盘位NAS开售
【Visual Leak Detector】在 VS 2015 中使用 VLD
世界关注:WTT新乡冠军赛:孙颖莎获女单冠军
全球百事通!智己NOA体验:高速上我撒手半个小时 回过头竟还在人寰
环球热推荐:网易云音乐上线“鲸云母带”音质:一首歌170MB SVIP专享
视焦点讯!如何快速而优雅的解决问题(提问的智慧简略版)
天天讯息:cin与CTRL+z的问题
世界快看点丨如何防止设备被重复控制
【环球快播报】破纪录!西班牙女子洞穴生活500多天 回地面称“不想出来”
世界热消息:被海鸥圈粉 沈义人:感觉要购入第一台比亚迪了
每日精选:成龙被观众当场要求退票上热搜 电影《龙马精神》回应:起诉造谣账号
最新资讯:几十秒看完10分钟的视频 就靠这AI输入法:日语也不怕
快讯:唯一全面实现国产化!低端低价的1LCD爆发:超DLP成智能投影仪主流
当前热议!6错误代码C3848.
全球关注:电影《龙马精神》剧组发声明辟谣“退票”事件
天天看热讯:5万元小车谁加速快?长安糯玉米零百22秒 秒杀宏光MINI EV
每日速递:诺奖得主杨振宁倡议 清华推出攀登计划:培养未来物理大师
全球新动态:都是4799元!你买AMD上代旗舰卡6950XT、还是老黄的RTX 4070
【全球快播报】无处不在的激光可能会毁掉你的双眼!
世界今头条!张艺谋去看LPL季后赛决赛了:此前宣布筹拍网剧《英雄联盟》
送父亲的礼物排行榜
全球观察:Steam最受欢迎的软件Wallpaper Engine疑似中病毒 网友称游戏库被盗
环球热头条丨优质长绒棉 亲肤透气:VXGY精梳棉五分裤49元(减120元)
当前资讯!ChatGPT带火AI芯片!NVIDIA顶级显卡售价超4万美元