File类和Files类

File类:用于访问磁盘的"目录"或"文件"

Files类:工具类,提供"常规"的目录或文件的工具方法

获取当前硬盘中的所有分区:

每个分区都是一个File类型的对象

package com.ztt.Demo01;import java.io.File;//File类和Files类
//File类:用于访问磁盘的"目录"或"文件"
//Files类:工具类,提供"常规"的目录或文件的工具方法
public class demo01 {public static void main(String[] args) {//获取当前硬盘中的所有分区//每个分区都是一个File类型的对象File[] roots=File.listRoots();for(File f : roots) {if(f != null) {System.out.println("分区名称:"+f.getPath() );System.out.println("分区容量:"+f.getTotalSpace()/1024/1024/1024);System.out.println("可用容量:"+f.getUsableSpace()/1024/1024/1024);}}}}

运行结果:

分区名称:C:\
分区容量:150
可用容量:99
分区名称:D:\
分区容量:164
可用容量:144
分区名称:E:\
分区容量:162
可用容量:157
package com.ztt.Demo01;import java.io.File;public class demo02 {public static void main(String[] args) {//每个目录都是一个File类型的对象//字符串类型的文件路径String path="D:\\test\\music";//创建File对象时,必须传入目录(文件的路径)File dir=new File(path);//获取目录相关的信息System.out.println("目录的路径:"+dir.getPath());System.out.println("目录的名称:"+dir.getName());System.out.println("父目录路径:"+dir.getParent());System.out.println("父目录名称:"+dir.getParentFile().getName());//获取子文件和子目录//获取所有子文件或子目录//每个子文件或子目录都是一个File对象File[] listFiles=dir.listFiles();for(File f:listFiles) {if(f.isDirectory()) {//子目录System.out.printf("【%s】\n",f.getName());}else {//子文件System.out.printf("%s的文件内容长度是:%d字节\n",f.getName(),f.length());}}//		System. out.println("了文件和子目录的名称:");
//		//获取所有子文件或子目录的名称
//		String[] listNames = dir.list();
//		for (String name : listNames) {
//			System.out.println(name );
//		}}}

运行结果:

目录的路径:D:\test\music
目录的名称:music
父目录路径:D:\test
父目录名称:test
【001】
【002】
【003】
【004】
Mojito.mp3的文件内容长度是:7640753字节
彩虹.mp3的文件内容长度是:10480397字节
晴天.mp3的文件内容长度是:10793969字节
package com.ztt.Demo01;import java.io.File;
import java.io.FileFilter;public class demo03 {public static void main(String[] args) {File dir=new File("D:\\test\\music");//仅获取子文件(音乐文件)//File[] listFiles=dir.listFiles();//返回所有的子文件或子目录//通过FilenameFilter接口进行子文件名称的检查过滤// File[] listFiles = dir.listFiles(new FilenameFilter() {..});//通过FileFilter接口进行子文件的过滤//传入子文件或子目录的File对象,进行过滤File[] listFiles=dir.listFiles(new FileFilter() {@Overridepublic boolean accept(File f) {//每个文件传入//System.out.println("再accept()方法中:"+ f.getName());if(f.isDirectory() || !f.getName().endsWith(".mp3")) {return false;}return true;}});for(File f:listFiles) {System.out.printf("音乐文件%s的长度是:%d字节\n",f.getName(),f.length());}}}

运行结果:

音乐文件Mojito.mp3的长度是:7640753字节
音乐文件彩虹.mp3的长度是:10480397字节
音乐文件晴天.mp3的长度是:10793969字节

创建目录 

创建单层目录

传入一个目录路径(该目录路径代表的目录并不存在)

创建多层目录

package com.ztt.Demo01;import java.io.File;public class demo04 {public static void main(String[] args) {//创建目录//创建单层目录//传入一个目录路径(该目录路径代表的目录并不存在)File dir1=new File("D:\\test\\music\\003");boolean isMkdir=dir1.mkdir();System.out.println(dir1.getName()+"创建"+isMkdir);//创建多层目录File dir2=new File("D:\\test\\music\\004\\aaa\\bbb\\ccc");dir2.mkdirs();}}

运行结果:

003创建false

创建文件

package com.ztt.Demo01;import java.io.File;
import java.io.IOException;public class demo05 {public static void main(String[] args) {//创建文件File f=new File("D:\\test\\music\\004\\aaa\\bbb\\ccc\\xxx.mp3");try {f.createNewFile();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
package com.ztt.Demo01;import java.io.File;
import java.io.FileFilter;
import java.util.HashMap;
import java.util.Map.Entry;public class demo06 {public static void main(String[] args) {HashMap<String, File> mp3FileMap=readMp3Files();for(Entry<String, File> entry:mp3FileMap.entrySet()) {System.out.printf("音乐名称:%s\t",entry.getKey());System.out.printf("音乐文件路径:%s",entry.getValue().getPath());System.out.println();}}//读取指定目录中的所有MP3文件,并保存至Map//key :音乐名称(不含后缀名)//value :音乐文件对象public static HashMap<String, File> readMp3Files(){File dir=new File("D:\\test\\music");File[] files=dir.listFiles(new FileFilter() {@Overridepublic boolean accept(File f) {if(f.isDirectory() || !f.getName().endsWith(".mp3")) {return false;}return true;}});//遍历File[]数组,重新保存至Map中HashMap<String, File> fileMap = new HashMap<String,File>();for (File f : files) {//获取文件名称(含后缀名)String fileName = f.getName();//计算key(不含后缀名的文件名称)String key = fileName.substring(0,fileName.indexOf("."));fileMap.put( key,f);}return fileMap;}}

运行结果:

音乐名称:晴天	音乐文件路径:D:\test\music\晴天.mp3
音乐名称:彩虹	音乐文件路径:D:\test\music\彩虹.mp3
音乐名称:Mojito	音乐文件路径:D:\test\music\Mojito.mp3

创建文件路径: 

package com.ztt.Demo01;import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;public class demo07 {public static void main(String[] args) {//创建文件路径//方式1:Path path1=Paths.get("D:\\test\\music\\Mojito.mp3");System.out.println(path1);//方式2:File f=new File("D:\\test\\music\\Mojito.mp3");Path path2=f.toPath();System.out.println(path2);}}

运行结果:

D:\test\music\Mojito.mp3
D:\test\music\Mojito.mp3

文件的复制 

package com.ztt.Demo01;import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;public class demo08 {public static void main(String[] args) {//文件的复制//Files.copy(in, target, options)try {//源文件路径File sourceFile = new File("D:\\test\\music\\彩虹.mp3" );Path source = sourceFile.toPath( );//目标文件路径Path target = Paths.get("D:\\test\\music\\001\\caihong.mp3");//复制//仅复制一次,不允许重复复制//Files.copy( source, target);//Files.copy(source, target, StandardCopyOption.COPY_ATTRIBUTES);//复制多次,允许重复复制Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);}catch(IOException e) {e.printStackTrace();}}}

读取文件内容(文本文件)

package com.ztt.Demo01;import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;public class demo09 {public static void main(String[] args) {//读取文件内容(文本文件)//Files.readAllLines(path) ;try {//读取文本文件中的所有文本内容List<String> lines=Files.readAllLines(Paths.get("D:\\test\\LICENSE"));for(String ln:lines) {System.out.println(ln);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

写入文件(文本文件) 

package com.ztt.Demo01;import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;public class demo10 {public static void main(String[] args) {// 写入文件(文本文件) // Files.write(path, lines, options);// Files.write(path,字节数组,options);// Files.write(path,Collection单例集合,指定字符编码集,options);// 案例1// 写入文件,内容来自一个集合try {// 一个保存若个字符串的单例集合(Collection类型)// ListArrayList<String> list = new ArrayList<String>();list.addAll(Arrays.asList("北京","上海","西安"));// Set
//			HashSet<String> set = new HashSet<String>();
//			set.addAll(Arrays.asList("成都","重庆","贵阳"));// 将集合的内容写入文本文件Files.write(Paths.get("D:\\test\\music\\002\\city.txt"), list,Charset.forName("utf-8"),// 设置指定字符编码集StandardOpenOption.APPEND);} catch (IOException e1) {e1.printStackTrace();}// 案例2// 写入文件,内容来自一个字节数组try {//byte[] array1 = {65,66, 67,68,69};byte[] array2 ="十年生死两茫茫不思量自难忘".getBytes();// 覆盖原内容
//			Files.write(Paths.get("D:\\test\\music\\002\\20240129.txt"),array1);// 追加原内容Files.write(Paths.get("D:\\test\\music\\002\\20240129.txt"),array2,StandardOpenOption.APPEND);} catch (IOException e2) {e2.printStackTrace();}}
}

 深度遍历文件

方式1:递归的方式

 方式2:使用Files工具类

package com.ztt.Demo01;import java.io.File;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;public class demo11 {public static void main(String[] args) {// 深度遍历文件File root = new File("D:\\test");// 方式1:递归的方式// ShowFiles1(root);// 方式2:使用Files工具类ShowFiles2(root);}private static void ShowFiles1(File dir) {System.out.println(dir);// 获取当前目录下的所有子文件或子目录File[] listFiles = dir.listFiles();// 遍历所有子目录或子文件if(listFiles != null) {for(File f : listFiles) {if(f.isDirectory()) {// 如果是目录,递归调用ShowFiles1(f);}else if(f.isFile()) {// 如果是文件,打印文件内容System.out.println(f);}}}}private static void ShowFiles2(File dir) {Path start = dir.toPath();//  SimpleFileVisitor类的匿名子类try {// 参数1: start代表开始路径// 参数2: FileVisitor接口实现类对象//		  (提供SimpleFileVisitor实现子类)Files.walkFileTree(start, new SimpleFileVisitor<Path>() {// 处理目录
//				@Override
//				public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
//					System.out.println(dir); // 打印目录
//					return FileVisitResult.CONTINUE;
//				}@Overridepublic FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {System.out.println(dir);// 打印目录return FileVisitResult.CONTINUE;}// 处理文件@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {System.out.println(file);return FileVisitResult.CONTINUE;}});} catch (IOException e) {e.printStackTrace();}}
}

运行结果:

D:\test
D:\test\21级.txt
D:\test\LICENSE
D:\test\music
D:\test\music\001
D:\test\music\001\caihong.mp3
D:\test\music\002
D:\test\music\002\20240129.txt
D:\test\music\002\city.txt
D:\test\music\003
D:\test\music\004
D:\test\music\004\aaa
D:\test\music\004\aaa\bbb
D:\test\music\004\aaa\bbb\ccc
D:\test\music\004\aaa\bbb\ccc\xxx.mp3
D:\test\music\Mojito.mp3
D:\test\music\彩虹.mp3
D:\test\music\晴天.mp3
D:\test\幸运儿.txt
package com.ztt.Demo01;import java.io.File;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;public class demo12 {public static void main(String[] args) {
HashMap<String, File> mp3FileMap=readMp3Files();for(Entry<String, File> entry:mp3FileMap.entrySet()) {System.out.printf("音乐名称:%s\t",entry.getKey());System.out.printf("音乐文件路径:%s",entry.getValue().getPath());System.out.println();}}//读取指定目录中的所有MP3文件,并保存至Map//key :音乐名称(不含后缀名)//value :音乐文件对象public static HashMap<String, File> readMp3Files(){File dir=new File("D:\\");//保存查找到的mp3文件ArrayList<File> mp3FileList=new ArrayList<File>();try {Files.walkFileTree(dir.toPath(), new SimpleFileVisitor<Path>() {@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {//判断如果是MP3文件if(file.toFile().getName().endsWith(".mp3")) {//添加至集合mp3FileList.add(file.toFile());}return FileVisitResult.CONTINUE;}//访问文件出错时,继续遍历@Overridepublic FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {return FileVisitResult.CONTINUE;}});} catch (IOException e) {e.printStackTrace();}//遍历File[]数组,重新保存至Map中HashMap<String, File> fileMap = new HashMap<String,File>();for (File f : mp3FileList) {//获取文件名称(含后缀名)String fileName = f.getName();//计算key(不含后缀名的文件名称)String key = fileName.substring(0,fileName.indexOf("."));fileMap.put( key,f);}return fileMap;}}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

StartAI宝藏功能——关键词解析

AIGC的同学们都有一个“世纪难题”——生图咒语。 想要生成高质量的图&#xff0c;关键词是至关重要地。关键词往往能决定一张图的成败&#xff01;当你看见一张戳中你审美的图&#xff0c;想模仿却不知如何下手&#xff0c;只能全网搜索生图咒语。 费事又费力&#xff0c;甚…

leetcode刷题(剑指offer) 50.Pow(x, n)

50.Pow(x, n) 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000示例 2&#xff1a; 输入&#xff1a;x 2.10000, n 3 输出&#x…

微信小程序|摇骰子

目录 简介设计与功能需求确定用户界面设计确定摇骰子动画效果确定随机数生成算法编码实现实现摇骰子动画测试与优化进行功能测试进行性能测试说明简介 制作一个摇骰子小程序是一个有趣且具有挑战性的项目。通过这个项目,你可以学习如何运用编程技术来模拟骰子的摇动和结果显示…

【LeetCode每日一题】56. 合并区间插入区间

一、判断区间是否重叠 力扣 252. 会议室 给定一个会议时间安排的数组 intervals &#xff0c;每个会议时间都会包括开始和结束的时间 intervals[i] [starti, endi] &#xff0c;请你判断一个人是否能够参加这里面的全部会议。 思路分析 因为一个人在同一时刻只能参加一个会…

Node.js-express

1.了解Ajax 1.1 什么是ajax Ajax的全称是Asynchronous Javascript And XML&#xff08;异步Js和XML&#xff09;. 通俗的理解&#xff1a;在网页中利用XMLHttpRequest对象和服务器进行数据交互的方式&#xff0c;就是Ajax 1.2 为什么要学习Ajax 之前所学的技术&#xff0c…

【git】git update-index --assume-unchanged(不改动.gitignore实现忽略文件)

文章目录 原因分析&#xff1a;添加忽略文件(取消跟踪)的命令&#xff1a;取消忽略文件(恢复跟踪)的命令&#xff1a;查看已经添加了忽略文件(取消跟踪)的命令&#xff1a; 原因分析&#xff1a; 已经维护的项目&#xff0c;文件已经被追踪&#xff0c;gitignore文件不方便修…

用可视化案例讲Rust编程3. 函数分解与参数传递

上一节我们在绘制面要素的时候&#xff0c;发现了函数功能体是三个不同步骤组成的&#xff1a; 读取文件获得geometry把geometry转变为绘图元素trace把绘图元素绘制到地图上 像我们上一节那样&#xff0c;把所有的功能都写在一个函数里面&#xff0c;这样的函数灵活性太差&am…

代理IP购买:选择按流量还是端口收费的代理?

​ 代理通常按以下两种标准之一收费&#xff1a;GB 或端口。但您应该选择哪一个&#xff1f;它们与其他产品有何不同&#xff1f;主要取决于您的需求&#xff0c;每种类型都有自己的优缺点&#xff0c;适合不同的情况。 在本文中&#xff0c;我们将详细分析每种类型&#xff0…

【VSCode】增加或减少一Tab的间隔

文章目录 示例 1&#xff1a;给 console 打印添加一 Tab 的间隔&#xff08;按下tab键即可&#xff09; // 原有的格式 if(a b){ console.log(true) }else{ console.log(false) }// 改变后的格式 if(a b){console.log(true) }else{console.log(false) }示例 2&#xff1a;给…

专有钉钉开发记录,及问题总结

先放几个专有钉钉开发文档 专有钉钉官网的开发指南 服务端(后端)api文档 前端api文档 前端开发工具下载地址 小程序配置文件下载地址 后端SDK包下载地址 专有钉钉域名是openplatform.dg-work.cn 开发记录 开发专有钉钉时有时会遇到要使用钉钉的api&#xff1b;通过 my 的方…

微信小程序canvs画布修改元素线条粗细、颜色、填充状态

目录 一、获取画布信息 二、修改元素线条粗细 三、修改元素颜色

JavaWeb学习|Cookie

学习材料声明 所有知识点都来自互联网&#xff0c;进行总结和梳理&#xff0c;侵权必删。 引用来源&#xff1a;尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版 在此之前&#xff0c;复习一下如何创建项目 首先创建正常的Java项目&#xff0c;之后选择add framework…

C#学习笔记-反射

前言 反射是.NET中的重要机制&#xff0c;通过反射可以得到*.exe或*.dll等程序集内部的接口、类、方法、字段、属性、特性等信息&#xff0c;还可以动态创建出类型实例并执行其中的方法。 反射的功能很强大&#xff0c;任何复杂抽象的分层架构或者复杂的设计模式均是建立在这些…

任务修复实例(1)

实例1 任务名&#xff1a;增强防御&#xff08;quest_template.id 8490&#xff09; 涉及的两个数据表分别为 smart_script 和 creature_summon_groups smart_script Reactstate 取值参考源码 UnitDefines.h 的 ReactStates 定义&#xff0c;其中&#xff1a;0为被动&#…

低导通电阻、汽车级STD20NF06LAG,STO47N60M6、STO33N60M6、STO36N60M6 600V MDmesh™ M6 功率MOSFET

1、STD20NF06LAG 汽车级N沟道60V、32 mOhm典型值、24 A STripFET II功率MOSFET STripFET VI™功率MOSFET是采用ST专有STripFET™技术和新型栅极结构的增强模式MOSFET。该款受益于STripFET™技术的功率MOSFET采用沟槽技术&#xff0c;可实现高效率和低RDS(on) &#xff0c;满足…

SparkSql---用户自定义函数UDFUDAF

文章目录 1.UDF2.UDAF2.1 UDF函数实现原理2.2需求:计算用户平均年龄2.2.1 使用RDD实现2.2.2 使用UDAF弱类型实现2.2.3 使用UDAF强类型实现 1.UDF 用户可以通过 spark.udf 功能添加自定义函数&#xff0c;实现自定义功能。 如&#xff1a;实现需求在用户name前加上"Name:…

P8655 [蓝桥杯 2017 国 B] 发现环

好水啊&#xff0c;那我来水一篇题解。 题目就是要你在树上找环。那么我们想&#xff0c;怎么知道出现了环&#xff1f; 首先明确一点&#xff0c;在一棵树上&#xff0c;任意两点有且只有一条路径使它们相连。所以当我们发现原本就相连的点又要再连一次就知道出现了环。 是…

83、评估权值预加载带来的性能提升

上两节介绍的权值预加载技术&#xff0c;在很多业务中是真实存在的。 只不过限于本小册内容以及大部分同学硬件设备的局限&#xff0c;这里无法通过真正的推理框架(比如 tvm, pytorch) GPU 来实现底层细节&#xff0c;这些推理框架中一般会将类似的优化技术封装起来。 作为 …

APPium简介及安装

1 APPium简介 1. 什么是APPium&#xff1f; APPium是一个开源测试自动化框架&#xff0c;适用于原生、混合或移动Web应用程序的自动化测试工具。 APPium使用WebDriver协议驱动iOS、Android等应用程序。 2. APPium的特点 支持多平台&#xff08;Android、iOS等&#xff09; …

Spring Cache简明教程

Spring Cache简明教程 引言什么是Spring Cache&#xff1f;核心特性应用场景如何工作 如何使用1. 添加依赖2. 启用缓存3. 配置缓存4. 使用缓存注解 使用缓存的注意事项缓存的数据序列化缓存键的生成缓存内容的一致性缓存的并发问题缓存穿透缓存雪崩缓存的存储容量方法的可见性和…