File类.Java

 一、File类

1,概述🏀🏀🏀

(1) java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关  

(2) File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,创建File对象的目的就是为了使用这些方法 ,但它并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。

(3) 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。

(4) File对象可以作为参数传递给流的构造器,指明读取或写入的"终点"。 

2、File类的使用🏀🏀🏀

1. 绝对路径 vs 相对路径

🧩1,绝对路径:是一个固定的路径,从盘符开始 

🧩2,相对路径:是相对于某个位置开始 

  • main()方法中的相对路径是相对于当前工程
  • 单元测试方法中的相对路径是相对于当前模块

2. 路径分隔符

🧩1,路径中的每级目录之间用一个路径分隔符隔开。

🧩2,路径分隔符和系统有关:

  • windows和DOS系统默认使用"\"来表示
  • UNIX和URL使用"/"来表示

🧩3,Java程序支持跨平台运行,因此路径分隔符要慎用。
为了解决这个隐患,File类提供了一个常量:
public static final String separator:根据操作系统,动态的提供分隔符

 3,常用的构造方法

public File (String pathname)根据文件路径创建文件对象(不可能是文件夹)
public File (String parent,String child)根据父路径名字符串和子路径名字符串创建文件对象
public File (File parent,String child)根据父路径对应文件对象和子路径名字符串创建文件对象

代码演示:

 public static void main(String[] args) {//1,根据字符串表示的路径,变成File对象。//变成File对象的目的:使用File里面的方法String str="D:\\FileDemo\\b2.txt";File f1 = new File(str);System.out.println(f1);//字符串变成了真实的路径,D:\FileDemo\b2.txt//2,父级路径:D:\FileDemo//   子级路径:b2.txtString parent="D:\\FileDemo";String child="b2.txt";File f2 = new File(parent, child);System.out.println(f2);//3,File fileParent = new File("D:\\FileDemo");File f3 = new File(fileParent, "b2.txt");System.out.println(f3);}

结果: 

834dc35c55db4736959319b08f9b75bc.png

4,成员方法

public long length()返回文件的大小(不能是文件夹)
public String getAbsolutePath()返回文件的绝对路径
public long lastModifies()返回文件最后修改的时间(时间毫秒值) 
public String getPath()返回定义文件时使用的路径
public String getName()返回文件的名称。带后缀

public String getName():

📝 细节1: 调用者是文件:返回文件的名称+后缀   b1.txt

b1:文件名

txt:扩展名

📝细节2: 调用者是文件夹:返回文件夹名称 

 代码演示:

public static void main(String[] args) {//定义File对象File f1 = new File("D:\\FileDemo\\b1.txt");//文件File files = new File("D:\\FileDemo\\aaa");//文件夹//1,返回文件的大小(单位字节)long l = f1.length();System.out.println(l);//6System.out.println(files.length());//0System.out.println("------------------=---");//2,getAbsolutePath()   返回文件的绝对路径String path = f1.getAbsolutePath();System.out.println(path);//D:\FileDemo\b1.txtFile f4 = new File("FileDemo1");//写的是相对路径String path1 = f4.getAbsolutePath();System.out.println(path1);//C:\Users\86166\IdeaProjects\one\FileDemo1System.out.println("------------------=---");//3,getPath()    返回定义文件时使用的路径,就是括号里的参数是什么就返回什么String path2 = f1.getPath();System.out.println(path2);//D:\FileDemo\b1.txtFile f5 = new File("FileDemo1");String path3 = f5.getPath();//FileDemo1System.out.println(path3);System.out.println("------------------=---");String f1Name = f1.getName();System.out.println(f1Name);// b1.txtSystem.out.println(files.getName());//aaaSystem.out.println("------------------=---");//4,lastModifies() 返回文件最后修改的时间(时间毫秒值)long l1 = f1.lastModified();System.out.println(l1);//毫秒值Date date = new Date(1716713772066L);//DateSystem.out.println(date);SimpleDateFormat format = new SimpleDateFormat();System.out.println(format.format(date));//Date-->String}

结果: 

654ce84798d149e1a6c26e12d26dda26.png

5,成员方法:添加,删除 

public boolean createNewFile()创建一个新的空文件(创建的一定是文件
public boolean mkdir创建单级文件夹
public boolean mkdirs创建多级文件夹
public boolean delete删除文件、空文件夹(不可能是有内容的 文件夹)

 public boolean createNewFile() :创建一个新的空文件(创建的一定是文件 )

📝细节1:

        第一次运行的时候return ture就表示创建成功,所以第二次运行就会return false

📝细节2:

        createNewFile:创建的一定是文件。如果不包含后缀,就创建一个不含后缀的文件

  代码演示:

public static void main(String[] args) throws IOException {//1,createNewFile()    创建一个新的空文件File f1 = new File("D:\\FileDemo\\e1.txt");boolean f1NewFile = f1.createNewFile();System.out.println(f1NewFile);File f2 = new File("D:\\FileDemo\\aaa2");System.out.println(f2.createNewFile());System.out.println("=========================");//2,mkdir  make Directory,       创建单级文件夹(目录)File f3 = new File("D:\\FileDemo\\fff");System.out.println(f3.mkdir());//trueFile f4 = new File("D:\\FileDemo\\aaa\\b");System.out.println(f4.mkdir());//trueSystem.out.println("=========================");//3,mkdirs             创建多级文件夹File f5 = new File("D:\\FileDemo\\aaa\\aa\\a");System.out.println(f5.mkdirs());//trueSystem.out.println("=========================");//4,delete             删除文件、空文件夹System.out.println(f5.delete());//删除文件夹aSystem.out.println(new File("D:\\FileDemo\\aaa\\aa").delete());//删除文件夹aa//细节://如果删除的文件夹有内容,删除失败}

6,成员方法:获取,遍历 

(掌握)public File[] listFiles()获取当前路径下所有内容
public static File[] listRoots()列出可利用的文件系统根
public String[] list()获取当前该路径下所有内容
public String[] list(FilenameFilter filter)利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles(FileFilter filter)利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles(FilenameFilter filter)利用文件名过滤器获取当前该路径下所有内容

注意:📝📝📝📝📝📝 

     获得的所有内容都是指该路径下的一级内容,不包下面的子文件夹

重点:📝📝📝📝📝📝

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

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

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

🧩当调用者File表示的路径是一个有内容的文件夹时,将里面所有的文件和文件夹路径放到File数组中返回 

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

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

😊

 代码演示:

 public static void main(String[] args) {//1,创建File对象File f1 = new File("D:\\FileDemo");System.out.println("======================");//2,listFiles()    获取当前路径下所有一级内容File[] files = f1.listFiles();for (File f : files) {//f依次表示FileDemo文件夹里面的所有文件或者文件夹System.out.println(f);}System.out.println("======================");//3,listFiles(FileFilter filter)  文件名过滤器的方法获取该路径下所有内容File[] arrF = f1.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return true;}});System.out.println(Arrays.toString(arrF));System.out.println("======================");//4,,获取以.txt结尾的文件System.out.println("方法一:---------------------------");for (File file : files) {if(file.isFile()&&file.getName().endsWith(".txt")){System.out.println(file);}}System.out.println("方法二:---------------------------");//listFiles(FileFilter filter)  文件名过滤器的方法File[] arr=f1.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return pathname.isFile()&&pathname.getName().endsWith(".txt");}});System.out.println(Arrays.toString(arr));System.out.println("方法三:---------------------------");/** accept()的参数:* 参数一:父级路径* 参数二:子级路径* 返回值:true,表示当前路径保留*       false,表示当前路径舍弃不要* */String[] arr3 = f1.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {File pathname = new File(dir, name);return pathname.isFile() && pathname.getName().endsWith(".txt");}});System.out.println(Arrays.toString(arr3));}

 结果: 

67ab24d8ce4a45d09fa90046cb0f907c.png

 案例路径: 

1c8902642e084f1aa86b7e9b48e2398a.png

3,练习: 

🎨🎨🎨需求:在当前模块下的aaa文件夹中创建一个a.txt文件

 代码演示: 

public static void main(String[] args) throws IOException {//1,先创建一个父级路径File parent = new File("aaa");parent.mkdirs();File aaaFile = new File(parent, "a.txt");boolean b = aaaFile.createNewFile();if(b){System.out.println("创建成功");}else {System.out.println("创建失败");}}

 结果: 

62a5f295f42248fd8b0284f7b1d9c43e.png

需求: 

🎨🎨🎨创建一个方法,找出所有以.avi结尾的文件 

 代码演示: 

 public static void main(String[] args) {File file = new File("D:");findAVI(file);}public static void findAVI(File src){File[] files = src.listFiles();if(files!=null){for (File f : files) {if(f.isFile()){if(f.getName().endsWith(".avi")){System.out.println(f);}}else{findAVI(f);}}}}//查找整个系统的.vai文件/*public static void findAVI(){File[] roots = File.listRoots();for (File root : roots) {findAVI(root);}}*/

 结果: 

222845fec5a94366888223ecd35ae11f.png

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

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

相关文章

Golang | Leetcode Golang题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; func numDistinct(s, t string) int {m, n : len(s), len(t)if m < n {return 0}dp : make([][]int, m1)for i : range dp {dp[i] make([]int, n1)dp[i][n] 1}for i : m - 1; i > 0; i-- {for j : n - 1; j > 0; j-- {if s[i] …

Linux基础 (十一):进程间通信

Linux进程间通信&#xff08;Inter-Process Communication, IPC&#xff09;是指在不同进程之间交换数据或信息的机制。由于进程间不能直接共享内存&#xff0c;Linux 提供了多种 IPC 机制来实现进程间的通信。主要为&#xff1a;管道、信号量、共享内存、消息队列、套接字。 目…

halcon 传统缺陷检测

一、电路检测 算子解释 dyn_threshold *dyn_threshold 利用局部阈值分割图像*OrigImage (input_object)&#xff1a;原始图像*ThresholdImage (input_object)&#xff1a;处理后图像&#xff08;一般采用滤波处理&#xff09;*RegionDynThresh (output_object)&#xff1…

操作系统 - 文件管理

文件管理 考纲内容 文件 文件的基本概念&#xff1b;文件元数据和索引节点(inode) 文件的操作&#xff1a;建立&#xff0c;删除&#xff0c;打开&#xff0c;关闭&#xff0c;读&#xff0c;写 文件的保护&#xff1b;文件的逻辑结构&#xff1b;文件的物理结构目录 目录的基…

英语学习笔记24——Give me/us/him/her/them some ...

Give me/us/him/her/them some … 给我/我们/他/她/他们一些…… 词汇 Vocabulary desk n. 课桌&#xff08;有书桌堂&#xff09;&#xff0c;写字台 复数&#xff1a;desks 搭配&#xff1a;desk mate 同桌    构成&#xff1a;desk mate 桌子上的伙伴 同桌    cl…

[Algorithm][动态规划][简单多状态DP问题][买卖股票的最佳时机 III][买卖股票的最佳时机 Ⅳ]详细讲解

目录 1.买卖股票的最佳时机 III1.题目链接2.算法原理详解3.代码实现 2.买卖股票的最佳时机 IV1.题目链接2.算法原理详解3.代码实现 1.买卖股票的最佳时机 III 1.题目链接 买卖股票的最佳时机 III 2.算法原理详解 注意&#xff1a;本题为了便于初始化&#xff0c;有较多细节服…

瑞萨RA8系列教程 | 基于e2s实现RA8串口输出配置

关注星标公众号&#xff0c;不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 串口是最常见的通信方式之一&#xff0c;也是单片机调试最常见的通信接口&#xff0c;也是现在的单片机必备的通信接口&#xff0c;目前&#xff08;2024-05&#xff09;最新、最强…

【香橙派AIpro】开箱测评

1.板子开箱 哟&#xff0c;看起来还不错哦&#xff01;&#xff01;&#xff01; 收货清单&#xff1a; 主板*1 1.5m数据线*1 充电头*1 1.1.充电头 近65W的充电头&#xff0c;不错不错。 1.2.主板 1.2.1.上面 哇噢&#xff0c;还送了2.4/5G的WiFi和蓝牙天线。 emm&#xf…

卷出新高度,直呼太强!时隔三月,YOLO再度进化升级:《YOLOv10—实时端到端目标检测》重磅来袭

真的是不止一次感叹&#xff0c;学习的速度都跟不上发论文出新品的速度。。。。。 继前文YOLOv9发布以来也就不到三个月的时间&#xff0c;YOLOv10就来了&#xff01; 《太卷了&#xff0c;目标检测新成员——YOLOv9: Learning What You Want to LearnUsing Programmable Gra…

吴恩达2022机器学习专项课程C2W2:2.22 多类 softmax softmax与神经网络 softmax的代码改良 多标签分类

目录 多分类问题1.什么是多分类问题2.多分类问题案例3.二分类与多分类的区别 Softmax1. 什么是Softmax2.逻辑回归预测的计算过程3. Softmax预测的计算过程4.Softmax 回归与逻辑回归的关系5. Softmax的损失函数 softmax与神经网络1.设置Softmax层2.Softmax层的计算3.softmax激活…

卸载/删除 Maxask.com,最简单的方法

被绑架的浏览器&#xff0c;太恶心了。 Maxask伪装成了插件&#xff0c;在你搜索网页的时候利用了重定向&#xff0c;导致出现的界面时Maxask的界面&#xff0c;很恶心。 只需要排查正在使用的&#xff0c;如下图有颜色的图表。 删除一个插件&#xff0c;浏览器搜索一下看看有…

mysql数据库安装指南

这里写自定义目录标题 官网下载mysql数据库安装MySQL数据库添加环境变量查看mysql的服务验证是否配置成功 注意&#xff1a;如果用MySQL8的版本安装不成功&#xff0c;可以尝试用MySQL5的版本。MySQL8的版本可能在windows上一直不能启动&#xff0c;经过查询是某个版本的漏洞。…

知识存储概述

文章目录 知识存储概述知识存储方式知识存储基础工具技术发展趋势 知识存储是针对知识图谱的知识表示形式设计底层存储方式&#xff0c;完成各类知识的存储&#xff0c;以支持对大规模图数据的有效管理和计算。知识存储的对象包括基本属性知识、关联知识、事件知识、时序知识和…

linux网卡MAC地址

1、ifconfig命令查看网卡MAC地址 1.1 通过HWaddr或ether字段过滤mac地址 ifconfig | grep HWaddr ifconfig | grep ether [rootlocalhost ~]# /sbin/ifconfig | grep ether 注&#xff1a;有些Linux发行版本的MAC地址字段为HWaddr&#xff0c;有些Linux发行版本的MAC地址字段…

智能未来,触手可及,畅享移动云

目录 一、简介 二、移动云强大优势 1. 强大的网络基础设施 2. 可靠服务 3. 丰富产品线 4. 技术应用 5. 优惠价格策略 三、多商对比 网络优势 四、移动云的未来发展 五、实战应用 5.1 服务器选购 ​编辑5.2 服务器启动 5.3 实例操作 六、移动云的服务优势 6.1 客…

postman教程-5-发送put请求

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了postman发送post请求的方法&#xff0c;本小节我们讲解一下postman发送put请求的方法。 HTTP PUT 请求是一种用于传输数据的网络协议方法&#xff0c;它在客户端和服务器之间的通信中扮演着重…

数据中心、HPC、AI等应用场景互联协议混战哪家强?

生成式人工智能快速发展对算力与存力呈指数需求增长&#xff0c;进一步加剧了算力与存力之间既有矛盾&#xff0c;时代在呼唤更大的运力&#xff08;即计算与存储之间的数据传输&#xff09;--AIGC时代需要更大带宽&#xff0c;更为快速的数据传输路径。 众所周知&#xff0c;P…

香橙派AIpro初体验,详解如何安装Home Assistant Supervised

香橙派AIpro&#xff08;OrangePi AIpro&#xff09;开发版&#xff0c;定位是一块AI开发板&#xff0c;搭载的是华为昇腾310&#xff08;Ascend310&#xff09;处理器。 没想到&#xff0c;这几年的发展&#xff0c;AI开发板也逐渐铺开&#xff0c;记得之前看到华为发布昇腾3…

javascript 防抖 节流

在前端开发中&#xff0c;性能优化是提升用户体验的关键环节。防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;作为两种常见的优化技术&#xff0c;能够有效管理和控制频繁触发的事件&#xff0c;减少不必要的计算和资源消耗。无论是在处理用户输…

基于香橙派 Ai Pro的ROS Qt人机交互软件部署指南

一&#xff0c;前言 最近收到了CSDN的邀请,对香橙派新出的Ai Pro进行测评: 说来也巧&#xff0c;其实香橙派本人对其映像挺深刻的,在2017年左右,本人刚上大学,当时是在淘宝购买树莓派&#xff0c;发现有个叫香橙派的国产板子&#xff0c;性能跟树莓派差不多吧&#xff0c;但是…