Java_File

介绍:

        File对象表示路径,可以是文件,也可以是文件夹。这个路径可以是存在的,也可以是不存在的,带盘符的路径是绝对路径,不带盘符的路径是相对路径,相对路径默认到当前项目下去找

构造方法:

public File(String pathname)    把字符串表示的路径变成File对象
public File(String parent, String child)    把父级路径和子级路径进行拼接
public File(File parent, String child)    把父级路径和子级路径进行拼接
代码演示:
public class FileDemo1 {public static void main(String[] args) {/*public File(String pathname)    把字符串表示的路径变成File对象public File(String parent, String child)    把父级路径和子级路径进行拼接public File(File parent, String child)    把父级路径和子级路径进行拼接*///路径 C:\Users\han\Desktop//1.public File(String pathname)    把字符串表示的路径变成File对象String str = "C:\\Users\\han\\Desktop";File f1 = new File(str);System.out.println(f1);//2.public File(String parent, String child)    把父级路径和子级路径进行拼接String parent = "C:\\Users\\han";String child = "Desktop";File f2 = new File(parent,child);System.out.println(f2);//3.public File(File parent, String child)    把父级路径和子级路径进行拼接File parent2 = new File("C:\\Users\\han");String child2 = "Desktop";File f3 = new File(parent2,child2);System.out.println(f3);}
}
运行结果:

成员方法:

1.判断和获取

下面来进行演示:

        这里我先在D盘的JavaFileTest文件夹中创建了文件夹aaa和文件a.txt

文件夹aaa中有一个文件b.txt,存储80个1,大小为80字节

文件a.txt中只有三个字符123,大小为3字节

代码演示:
public class FileDemo2 {public static void main(String[] args) {/*public boolean isDirectory()    判断此路径名表示的File是否为文件夹public boolean isFile()         判断此路径名表示的File是否为文件public boolean exists()         判断此路径名表示的File是否存在public long length()            返回文件的大小(字节数量)public String getAbsolutePath() 返回文件的绝对路径public String getPath()         返回定义文件时使用的路径public String getName()         返回文件的名称,带后缀public long lastModified()      返回文件的最后修改时间(时间毫秒值)*///判断//public boolean isDirectory()    判断此路径名表示的File是否为文件夹//public boolean isFile()         判断此路径名表示的File是否为文件//public boolean exists()         判断此路径名表示的File是否存在//1.对文件进行判断File f1 = new File("D:\\JavaFileTest\\a.txt");System.out.println(f1.isDirectory());System.out.println(f1.isFile());System.out.println(f1.exists());//2.对文件夹进行判断System.out.println("------------------------");File f2 = new File("D:\\JavaFileTest\\aaa");System.out.println(f2.isDirectory());System.out.println(f2.isFile());System.out.println(f2.exists());//3.对不存在路径进行判断System.out.println("------------------------");File f3 = new File("D:\\JavaFileTest\\abc");System.out.println(f3.isDirectory());System.out.println(f3.isFile());System.out.println(f3.exists());//获取System.out.println("------------------------");//public long length()            返回文件的大小(字节数量)System.out.println("------------------------");System.out.println(f1.length());//注意:这个方法只能获取文件的大小,单位是字节//如果单位是M、G,可以不断除1024System.out.println(f2.length());//无法获取文件夹的大小//如果要获取文件夹的大小,需要把文件夹中的所有文件大小累加在一起//public String getAbsolutePath() 返回文件的绝对路径System.out.println("------------------------");System.out.println(f1.getAbsoluteFile());System.out.println(f2.getAbsoluteFile());//这里在idea中此模块新建了一个文件a.txtFile f4 = new File("file\\a.txt");System.out.println(f4.getAbsoluteFile());//public String getPath()         返回定义文件时使用的路径System.out.println("------------------------");System.out.println(f1.getPath());System.out.println(f2.getPath());System.out.println(f4.getPath());//public String getName()         返回文件的名称,带后缀System.out.println("------------------------");System.out.println(f1.getName());System.out.println(f2.getName());System.out.println(f4.getName());//public long lastModified()      返回文件的最后修改时间(时间毫秒值)System.out.println("------------------------");long lastModified1 = f1.lastModified();System.out.println(lastModified1);SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");System.out.println(sdf.format(lastModified1));}
}
运行结果:

2.创建和删除

        这里仍然是在D盘中JavaFileTest文件中创建一个文件a.txt和一个文件夹aaa内容包括一个文件b.txt。

代码演示:
public class FileDemo3 {public static void main(String[] args) throws IOException {/*public boolean createNewFile()  创建一个新的空的文件public boolean mkdir()          创建单极文件夹public boolean mkdirs()         创建多级文件夹public boolean delete()         删除文件、空文件夹*///1.public boolean createNewFile()  创建一个新的空的文件//创建一个不存在的文件System.out.println("创建一个不存在的文件");File f1 = new File("D:\\JavaFileTest\\b.txt");boolean b1 = f1.createNewFile();System.out.println(b1);//创建一个已经存在的文件System.out.println("创建一个已经存在的文件");File f2 = new File("D:\\JavaFileTest\\a.txt");boolean b2 = f2.createNewFile();System.out.println(b2);//细节1:如果创建一个父级路径不存在的文件,那么会有异常IOException/*细节2:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件*/System.out.println();//2.public boolean mkdir()          创建单极文件夹//创建已经存在的路径(包括已经创建的文件的路径)的文件夹System.out.println("创建已经存在的路径(包括已经创建的文件的路径)的文件夹");File f3 = new File("D:\\JavaFileTest\\aaa");boolean b3 = f3.mkdir();System.out.println(b3);//创建一个不存在的路径的文件夹System.out.println("创建一个不存在的路径的文件夹");File f4 = new File("D:\\JavaFileTest\\bbb");boolean b4 = f4.mkdir();System.out.println(b4);//创建一个多级文件夹System.out.println("创建一个多级文件夹");File f5 = new File("D:\\JavaFileTest\\aaa\\bbb\\ccc");boolean b5 = f5.mkdir();System.out.println(b5);System.out.println();//3.public boolean mkdirs()         创建多级文件夹System.out.println("创建多级文件夹");//细节:mkdirs方法既可以创建单极文件夹,又可以创建多级文件夹File f6 = new File("D:\\JavaFileTest\\aaa\\bbb\\ccc");boolean b6 = f6.mkdirs();System.out.println(b6);System.out.println();//4.public boolean delete()         删除文件、空文件夹//删除已存在文件System.out.println("删除已存在文件");boolean b7 = f1.delete();System.out.println(b7);//删除不存在的文件System.out.println("删除不存在的文件");File f8 = new File("D:\\JavaFileTest\\abcdefg");boolean b8 = f8.delete();System.out.println(b8);//删除有内容的文件夹System.out.println("删除有内容的文件夹");boolean b9 = f3.delete();System.out.println(b9);//删除空文件夹System.out.println("删除空文件夹");boolean b10 = f4.delete();System.out.println(b10);}
}
运行结果:

3.获取并遍历

        这里仍然是在D盘中JavaFileTest文件中创建一个文件a.txt和一个文件夹aaa内容包括一个文件b.txt。

代码演示:
public class FileDemo4 {public static void main(String[] args) {File f1 = new File("D:\\JavaFileTest");File[] files = f1.listFiles();for (File file : files) {System.out.println(file);}}
}
运行结果:

注意:

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

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

        3.当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组

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

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

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

获取并遍历还有其他一些方法,如下:

这些方法只需了解即可,重点掌握上述listFiles方法。

练习题:

先创建好文件和文件夹

JavaFileTest文件夹:

aaa文件夹:(只存储空文件夹ccc)

bbb文件夹:

练习一
        在当前模块下的aaa文件夹中创建一个a.txt
代码演示:
public class FileTest1 {public static void main(String[] args) throws IOException {File parent = new File("C:\\Users\\Han\\IdeaProjects\\file\\aaa");String name = "a.txt";File file = new File(parent,name);boolean b = file.createNewFile();System.out.println(b);}
}
运行结果:

 练习二
        定义一个方法找某一个文件夹中,是否有以.xls结尾的工作表(暂时不需要考虑子文件夹)

        

代码演示:
public class FileTest2 {public static void main(String[] args) {//对文件夹aaa判断File f1 = new File("D:\\JavaFileTest\\aaa");boolean b1 = existXls(f1);System.out.println(b1);//对文件夹bbb判断File f2 = new File("D:\\JavaFileTest\\bbb");boolean b2 = existXls(f2);System.out.println(b2);}//定义方法public static boolean existXls(File file) {//遍历File[] files = file.listFiles();if(files == null) {return false;}for (File f : files) {if(f.isFile() && f.getName().endsWith(".xls")) {return true;}}return false;}
}
运行结果:

 练习三
        找到电脑中所有以.xls结尾的工作表(需要考虑子文件夹)
代码演示:
public class FileTest3 {public static void main(String[] args) {File[] roots = File.listRoots();for (File root : roots) {// C:\  D:\ergodicFile(root);}}//遍历一个文件夹,并输出所有.xls文件public static void ergodicFile(File dir) {File[] files = dir.listFiles();if (files != null) {for (File file : files) {if(file.isDirectory()){//如果是文件夹ergodicFile(file);} else {//如果是文件String name = file.getName();if(name.endsWith(".xls")) {System.out.println(name);}}}}}}
运行结果:

 练习四
        删除一个多级文件夹
代码演示:
public class FileTest4 {public static void main(String[] args) {File f1 = new File("D:\\JavaFileTest\\aaa");deleteFile(f1);}//遍历一个文件夹,并删除所有文件public static void deleteFile(File dir) {File[] files = dir.listFiles();if (files != null) {for (File file : files) {if(file.isDirectory()){//如果是文件夹deleteFile(file);} else {//如果是文件file.delete();}}}dir.delete();}
}
运行结果:

        成功删除aaa多级文件夹

 练习五
        统计一个文件夹中每种文件的个数并打印(考虑子文件夹)打印格式如下:txt:2个doc:3个xls:1个
代码演示:
public class FileTest5 {static HashMap<String,Integer> hm = new HashMap<>();public static void main(String[] args) {File file = new File("D:\\JavaFileTest");getAllKindsOfFile(file);hm.forEach((key, count) -> System.out.println(key + ":" + count + "个"));}public static void getAllKindsOfFile(File src) {File[] files = src.listFiles();for (File file : files) {//遍历if(file.isFile()) {//是文件String name = file.getName();if(name.contains(".")) {String[] arr = name.split("\\.");//单一个.表示任意字符,加上转义字符才表示.String kind = arr[arr.length - 1];if(hm.containsKey(kind)) {//如果集合中已存在hm.put(kind,hm.get(kind) + 1);} else {//如果集合中未存在hm.put(kind,1);}}} else {//是文件夹getAllKindsOfFile(file);}}}
}
运行结果:

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

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

相关文章

基于SSM的校园短期闲置资源置换平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的校园短期闲置资源置换平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过…

燃气电力瓶装气行业入户安检小程序开发

我们开发的小区业主入户安检小程序&#xff0c;旨在满足燃气、电力以及其他需要入户安检的行业需求。该程序支持自定义安检项目&#xff0c;实现线下实地安检与线上数据保存的完美结合。在安检过程中&#xff0c;我们可以拍照或录像&#xff0c;以确保安检的透明性和可追溯性&a…

渲染管线中光照的计算

文章目录 渲染管线中光照的计算前言法向量朗伯余弦定律漫反射环境光照镜面光照菲涅尔效应 表面粗糙度光照模型平行光源点光源衰减 聚光灯 渲染管线中光照的计算 前言 首先我们来看一下同一个模型在有光与无光下的区别&#xff1a; 无光&#xff1a; 有光 很明显的感知就是…

加速科技突破2.7G高速数据接口测试技术

随着显示面板分辨率的不断提升&#xff0c;显示驱动芯片&#xff08;DDIC&#xff09;的数据接口传输速率越来越高&#xff0c;MIPI、LVDS/mLVDS、HDMI等高速数据接口在DDIC上广泛应用。为满足高速数据接口的ATE测试需求&#xff0c;作为国内少数拥有完全自研的LCD Driver测试解…

WebSocket 来单提醒和客户催单功能

一&#xff1a;WebSocket &#xff1a; WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#…

vue 代码样式问题

部分电脑存在样式错乱问题&#xff0c;部分电脑样式正常。最后发现是样式写在 el-col 里面导致的。 注意&#xff1a;写样式不要放在 el-row 或者 el-row &#xff0c;导致部分电脑会出现莫名其妙的样式问题 <el-row class"detail"><el-col class"it…

OSPF NSSA区域

原理概述 OSPF 协议定义了 Stub 区域和 Totally Stub 区域这两种特殊的非骨干区域&#xff0c;为的是精简 LSDB 中 LSA 的数量&#xff0c;同时也精简路由表中的路由条目数量&#xff0c;实现优化设备和网络性能的目的。根据定义&#xff0c; Stub 区域或 Totally Stub 区域中是…

Springboot项目使用redis实现session共享

1.安装redis&#xff0c;并配置密码 这里就不针对于redis的安装约配置进行说明了&#xff0c;直接在项目中使用。 redis在windows环境下安装&#xff1a;Window下Redis的安装和部署详细图文教程&#xff08;Redis的安装和可视化工具的使用&#xff09;_redis安装-CSDN博客 2…

PHP+MySQL组合开发 自定义商城系统源码 带完整的安装代码包以及安装部署教程

随着电子商务的蓬勃发展&#xff0c;越来越多的企业和个人希望拥有自己的在线商城系统。小编给大家分享一款基于PHP和MySQL技术栈&#xff0c;开发的一套自定义商城系统源码。该系统旨在帮助用户快速搭建稳定、高效的电子商务平台&#xff0c;并提供灵活的自定义功能&#xff0…

ORA-02020:过多的数据库链接在使用

一、问题描述 今天同事说&#xff0c;有一个查询功能&#xff0c;同时查了几个子平台的dblink&#xff0c;页面返回报错。 提示ORA-02020&#xff1a;过多的数据库链接在使用&#xff1b; bad SQL grammar 二、解决办法 1&#xff09;分析业务需求 分析业务场景 &#xff0c;发…

美食推荐网站设计

**中文摘要&#xff1a;**在当今信息化、网络化的时代背景下&#xff0c;美食文化正逐渐融入人们的日常生活&#xff0c;而网络平台成为人们获取美食信息、分享美食体验的重要途径。为了满足广大美食爱好者对美食信息的探索和推荐需求&#xff0c;本文提出了一种创新的美食推荐…

谷歌开源!用 js 编写 Shell 脚本! | 开源日报 No.247

google/zx Stars: 41.4k License: Apache-2.0 zx 是一个用于编写更好脚本的工具。 提供有用的包装器&#xff0c;简化了对 child_process 的操作转义参数并提供合理的默认值使用 JavaScript 编写复杂脚本时比 Bash 更方便可以直接使用 npm 安装 dani-garcia/vaultwarden St…

Nest 快速上手 —— (三)中间件 / 异常过滤器

一、 中间件&#xff08;Middleware&#xff09; 1.特点 中间件是一个在路由处理程序之前被调用的函数。中间件函数可以访问请求和响应对象&#xff0c;以及应用程序请求-响应周期中的next()中间件函数。下一个中间件函数通常由一个名为next的变量表示。 中间件函数可以执行以…

5.9gunplot绘图堆叠柱状图

gunplot绘图堆叠柱状图 plot"要用的数据&#xff08;后缀名是.dat)" using 2 t(或者title) 跟着是要命名的属性名称 这个名称可以用.dat里的每列列名&#xff0c;也可以直接在后面跟着定义 plot "data.dat" using 2 t columnheader(2), using 3 t column…

PyQt5 解决界面无响应方案

文章目录 前言版本案例解决方案QThreadQTimer 局部变量创建异步线程导致 UI 未响应如果 QTimer 不使用 self.time 写法 个人简介 前言 在PyQt5中&#xff0c;GUI线程通常指的是Qt的主事件循环线程&#xff0c;也称为主线程。主线程负责处理GUI事件、更新UI界面等任务。在PyQt5…

如何通过OMS加快大表迁移至OceanBase

OMS&#xff0c;是OceanBase官方推出的数据迁移工具&#xff0c;能够满足众多数据迁移场景的需求&#xff0c;现已成为众多用户进行数据迁移同步的重要工具。OMS不仅支持多种数据源&#xff0c;还具备全量迁移、增量同步、数据校验等功能&#xff0c;并能够对分表进行聚合操作&…

系统运维(虚拟化)

1.VLAN VLAN&#xff08;Virtual Local Area Network&#xff09;即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。 每个VLAN是一个广播域&#xff0c;VLAN内的主机间可以直接通信&#xff0c;而VLAN间则不能直接互通。这样&#xff0c;广播报…

深度学习网络:设计、开发和部署

​书籍&#xff1a;Deep Learning Networks: Design, Development and Deployment 作者&#xff1a;Jayakumar Singaram&#xff0c;S. S. Iyengar&#xff0c;Azad M. Madni 出版&#xff1a;Springer书籍下载-《​深度学习网络&#xff1a;设计、开发和部署》该教材为学生和工…

vue使用screenfull实现全屏模式

vue实现全屏模式可以通过第三方依赖screenfull完成效果。 实现效果&#xff1a;查看源码 首先需要安装第三方依赖 // npm npm install screenfull//yarn yarn add screenfull// pnpm pnpm install screenfull代码实现&#xff1a; <div class"flex-center w100 h…

986: 哈夫曼译码

解法&#xff1a;先把代码粘贴到编译器&#xff08;vs&#xff09;上&#xff0c;分享一个一键去除空白行的操作&#xff0c;ctrlf调出查找窗口&#xff0c;输入查找(?<\r\n)\r\n&#xff0c;选择正则表达式&#xff0c;替换就可以发现会去掉一百多行空白行。 本题只需要利…