Java的 File类

Java的 File类

  • File类:
    • 相关方法:
      • 构造方法:
      • 创建文件/目录:
      • 重命名:
      • 判断:
      • 获取:
      • 删除:
    • 路径:
    • 相关操作:
      • 操作1:
        • 目录存在:
        • 一层级的目录不存在:
        • 多层级的目录不存在:
      • 操作2:
        • 所有文件信息:
        • 文件后缀名为txt:
        • API的过滤器:
        • 目录及子目录文件信息:

 

File类:

File是文件目录路径名的抽象表示。
       File类的对象可以表示文件:C:\Users\ouyang\Desktop\hhh.txt。
       File类的对象可以表示目录路径名:C:\Users\ouyang\Desktop。
 
File只关注文件本身的信息(文件名、是否可读、是否可写…),而不能操作文件里面的内容。
 
​ File类 – 表示文件或文件夹,不能对文件里的数据进行操作。

文件里的数据进行操作的是:IO流

 

相关方法:

File 方法:

  1. 该文件存放的绝对路径 String getAbsolutPath();

  2. 该文件的文件名 String getName();

  3. 该文件是否可写 boolean canWrite();

  4. 该文件是否可读 boolean canRead();

  5. 该文件是否为隐藏文件 boolean isHidden();

  6. 该文件的长度 int length();

  7. 该文件的最后修改时间 long lastModify();

public static void main(String[] args) {//创建file对象File file = new File("C:\\Users\\何小宝\\Desktop\\hhy.txt");System.out.println("获取文件路径:" + file.getAbsolutePath());System.out.println("获取文件名:" + file.getName());System.out.println("获取文件是否可读:" + file.canRead());System.out.println("获取文件是否可写:" + file.canWrite());System.out.println("获取文件是否隐藏:" + file.isHidden());System.out.println("获取文件大小(字节):" + file.length());//格式化日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String datetime = sdf.format(file.lastModified());System.out.println("获取文件最后修改时间:" + datetime);}

 
 

构造方法:

方法方法介绍
File(File parent, String child)根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

 

创建文件/目录:

方法方法介绍
boolean createNewFile()当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
boolean mkdir()创建此抽象路径名指定的目录。
boolean mkdirs()创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。


 

重命名:

方法方法介绍
boolean renameTo(File dest)重新命名此抽象路径名表示的文件。

 

判断:

方法方法介绍
boolean isDirectory()测试此抽象路径名表示的文件是否是一个目录。
boolean isFile()测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden()测试此抽象路径名指定的文件是否是一个隐藏文件。
boolean canRead()测试应用程序是否可以读取此抽象路径名表示的文件。
boolean canWrite()测试应用程序是否可以修改此抽象路径名表示的文件。


 

获取:

方法方法介绍
File getAbsoluteFile()返回此抽象路径名的绝对路径名形式。
String getAbsolutePath()返回此抽象路径名的绝对路径名字符串。
String getName()返回由此抽象路径名表示的文件或目录的名称。
String getParent()返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
File getParentFile()返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
String getPath()将此抽象路径名转换为一个路径名字符串。
long lastModified()返回此抽象路径名表示的文件最后一次被修改的时间。
long length()返回由此抽象路径名表示的文件的长度。
String[] list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] list(FilenameFilter filter)返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。

 

删除:

方法方法介绍
boolean delete()删除此抽象路径名表示的文件或目录。

 

 

路径:

相对路径:相对于当前项目下的路径。
 
绝对路径:从根目录开始的完整路径,包含了文件系统中该文件或目录,所在的完整路径,通常以根目录符号(如 Linux 中的“/”,Windows 中的“C:\”)开始。

public static void main(String[] args) {File file = new File("file.txt");//使用的是相对路径System.out.println(file.length());//C:\wenjian\file.txtSystem.out.println("绝对路径:" + file.getAbsolutePath());//file.txtSystem.out.println("相对路径:" + file.getPath());}

 
 

相关操作:

 

操作1:

通过程序,判断指定路径的文件是否存在,如果不存在,则创建该文件。

下面按各种情况来解决该问题:

  1. 目录已存在的情况。

  2. 有一个层级的目录不存在的情况。

  3. 有多个层级的目录不存在的情况。

 

目录存在:
//目录已存在的情况
public static void main(String[] args) throws IOException {File file = new File("file01\\hhh.txt");//判断文件是否存在if(!file.exists()){//文件不存在//创建文件file.createNewFile();}}

 

一层级的目录不存在:
//有一个层级的目录不存在的情况
public static void main(String[] args) throws IOException {//C:\wenjian\file01\hhh.txtFile file = new File("file01\\hhh.txt");//获取父路径 -- C:\wenjian\file01File parentFile = file.getParentFile();//判断父路径是否存在if(!parentFile.exists()){//创建一层目录parentFile.mkdir();}//判断文件是否存在if(!file.exists()){//创建文件file.createNewFile();}}

 

多层级的目录不存在:
//有多个层级的目录不存在的情况
public static void main(String[] args) throws IOException {//C:\wenjian\file01\file02\file03\hhh.txtFile file = new File("file01\\file02\\file03\\hhh.txt");//获取父路径 -- C:\wenjian\file01\file02\file03File parentFile = file.getParentFile();//判断父路径是否存在if(!parentFile.exists()){//创建多层目录parentFile.mkdirs();}//判断文件是否存在if(!file.exists()){//创建文件file.createNewFile();}}

 

 

操作2:

  1. 输出指定目录下的所有文件信息,比如打印当前项目根目录下的所有文件信息(只考虑当前目录,不考虑子目录)。

  2. 要求只输出文件后缀名为txt的文件。

  3. 根据API的过滤器来完成该功能。

  4. 需求继续跟进,列出当前目录及子目录中符合该条件的文件信息(递归)。

 

所有文件信息:
//输出指定目录下的所有文件信息
public static void main(String[] args) {File file = new File("D:\\2023");//获取当前目录下所有文件及文件夹的名字
//		String[] list = file.list();
//		for (String fileName : list) {
//			System.out.println(fileName);
//		}//获取当前目录下所有的file对象File[] listFiles = file.listFiles();//获取当前目录下所有的文件及文件夹的file对象for (File f : listFiles) {//可以输出file对象相关的方法System.out.println(f.getName() + " -- " + f.canRead() + " -- " + f.canWrite());}}

 

文件后缀名为txt:
//要求只输出文件后缀名为txt的文件
public static void main(String[] args) {File file = new File("D:\\2023");//获取当前目录下所有文件及文件夹的名字
//		String[] list = file.list();
//		for (String fileName : list) {//能输出文件夹
//			if(fileName.endsWith(".txt")){
//				System.out.println(fileName);
//			}
//		}//获取当前目录下所有的file对象File[] listFiles = file.listFiles();//获取当前目录下所有的文件及文件夹的file对象for (File f : listFiles) {//文件名字String fileName = f.getName();//判断f是否是文件if(f.isFile() && fileName.endsWith(".txt")){System.out.println(fileName);}}}

 

API的过滤器:
//根据API的过滤器来完成该功能
public static void main(String[] args) {File file = new File("D:\\2023");//过滤器,过滤你不想要的内容,留下你想要的内容。String[] list = file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {File childFile = new File(dir, name);if(childFile.isFile() && childFile.getName().endsWith(".txt")){return true;}return false;}});for (String fileName : list) {System.out.println(fileName);}}

 

目录及子目录文件信息:
//需求继续跟进,列出当前目录及子目录中符合该条件的文件信息(递归)
public static void main(String[] args) {File file = new File("D:\\2023");fileHandler(file, ".txt");}public static void fileHandler(File file,String suffix){File[] listFiles = file.listFiles();for (File f : listFiles) {if(f.isFile()){//文件String name = f.getName();if(name.endsWith(suffix)){System.out.println(name);}}else if(f.isDirectory()){//文件夹fileHandler(f, suffix);}}}

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

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

相关文章

c++模板与泛型编程

模板的作用:通过使用模板降低重复代码的编写,把已经写好的代码作用最大化; 模板的概念 1.模板与泛型编程(目的时只进行逻辑操作,不需要考虑数据类型,将类型作为参数传递) 模板是实现代码重用…

【软件设计师】程序语言

1.程序设计语言基本概念 1.1 低级语言与高级语言 低级语言:机器语言和汇编语言称为低级语言 机器语言指0.,1组成的机器指令序列 汇编语言指用符号表示指令的语言,如MOV AX,2 高级语言:从人类的逻辑角度出发&#xff0…

numpy-mkl的下载地址

不要使用pip3直接在终端安装,因为pip3默安装的是numpy,而不是numpymkl。 采用在第三方库中手动下载后,再安装的方式。 第三方库网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 如果不能进入就可以选择去git里面&#x…

(三)MobaXterm、VSCode、Pycharm ssh连接服务器并使用

背景:根据前两篇文章操作完成后, 手把手教学,一站式安装ubuntu及配置服务器-CSDN博客 手把手教学,一站式教你实现服务器(Ubuntu)Anaconda多用户共享-CSDN博客 课题组成员每人都有自己的帐号了&#xff0…

嵌入式0基础开始学习 Ⅲ Linux基础(3)正则表达式

0.问题引入 字符串是计算机应用中最为广泛的处理对象之一(浏览器,xml文件,代码) 并且字符串的组合规则形式各种各样,如: 数字字符串 email字符串 IP地址字符串 网址 …

互联网政务应用安全管理规定:使用安全连接方式访问

前几日,由中央网络安全和信息化委员会办公室、中央机构编制委员会办公室、工业和信息化部、公安部等4部门联合制定的《互联网政务应用安全管理规定》(以下简称规定)发布了,规定定义了互联网政务应用,也对互联网政务应用…

Android数据缓存框架 - 内存数据载体从LiveData到StateFlow

引言:所有成功者的背后,都有一份艰苦的历程,不要只看到了人前的风光,而低估了他们背后所付出的努力。 随着flow到流行度越来越高,有开发者呼吁我使用flow,于是我就如你们所愿,新增了StateFlow作…

智能时代下,人机交互和虚拟现实的机遇和挑战

智能时代下,人机交互和虚拟现实的机遇和挑战

多态(C++)

多态(C) 本文如果有错误或者不足的地方,希望各位大佬多多指点。 【本文目录】 1.多态的概念2.多态的定义及实现3.抽象类4.多态的原理5.单继承和多继承的虚函数表 1.多态的概念 多态的概念就是:多种形态 多态就是可以有多种的形态。不同的身份去实现同一…

【Leetcode 160】环形链表——双指针,细节讲解

题目 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#…

RTSP/Onvif安防视频监控云平台EasyNVR重启后通道在线视频无法播放,接口报错502是什么原因?

EasyNVR安防视频云平台是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif协议接入的安防监控流媒体视频云平台。平台具备视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频能力,能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、W…

hypack如何采集多波束数据?(下)

多波束测量模块 1)记录多波束和辅助传感器的数据; 2)显示实时改正后的数据和数据质量信息。 ​编辑​ 测量准备 1)设置大地测量参数和硬件设置; 2)计划测线 计划测线是一定间距的平行线,…

微软联手清华,AI注释让文本到图像生成更符合人类偏好

获取本文论文原文PDF,请在公众号【AI论文解读】留言:论文解读 摘要 本研究展示了利用人类偏好数据集来精细调整文本到图像生成模型的潜力,增强了生成图像与文本提示之间的一致性。尽管取得了进展,现有的人类偏好数据集要么构建成…

掌控安全CTF-2024年5月擂台赛-WP(部分)

MISC ez_Misc 题目给了一个加密的压缩包和一个文本文档,首先我们先来看文本的内容,如下: 很容易看出,0宽隐写,用PuzzleSolver梭哈一下,发现了:Thi3 is n0t 2 hint 又在文本中发现一个特征&…

【2024】高校网络安全管理运维赛

比赛时间:2024-05-06 Re-easyre 基本的base64换表,用CyberChef解密 Re-babyre 进入主函数,发现输入四次 看一下就知道是大数求解 (当初写的时候差不多 不知道为什么第四个总是算错…) from z3 import *s Solver() # 设置一个解方程的类…

中心渗透Ⅱ

cs与msf权限传递以及mimikatz抓取win2012明文密码 使用Cobalt Strike抓取win2012明文密码,将会话传递到Metasploit Framework上 1.cs生成木马并使目标服务器中马 建立监听生成木马 2.抓取目标主机的明文密码 通过修改注册表来让Wdigest Auth保存明文口令 shell …

技术就绪度

技术就绪度(Technology Readiness Level,简称TRL)这个术语中的每个字符可以这样理解: 技术(Technology):指的是正在研发或评估的具体的技术、工具、材料或方法。这可以是一套软件程序、一个物理…

一分钟揭秘面试官真实意图,稳拿offer的面试秘诀!

想要在面试中脱颖而出,顺利获得心仪的offer吗?那么,你需要了解面试官背后的潜台词。通过解析这些潜台词,你将能更准确地把握面试官的期望,并给出他们最喜欢的回答。下面,就让我们一起揭开这层神秘的面纱&am…

深入pandas:数据分析

目录 前言 第一点:导入模块 第二点:准备数据 第三点:简单的分析数据 第四点:【重点】数据透支 总结 前言 在数据分析与挖掘的领域,了解如何使用工具和方法来探索数据是至关重要的。本文将探讨如何利用Python中的…

C语言常用字符串处理函数

C语言中包含了很多对字符串处理的函数,要使用这些函数&#xff0c; 首先需要导入头文件#include <string.h> 1. strlen() -- 计算字符串长度 原型: size_t strlen(char const *string); 例: char *str "abcde"; size_t len strlen(str); // 结果为…