当前位置: 首页 > news >正文

Java中的File类应用

File类简介

File是什么?

File 类是一个与平台无关的类,用于封装文件系统的路径名。它并不直接操作文件的内容,而是提供了一系列方法来获取和设置文件的元数据,比如文件名、路径、大小、修改时间等,并允许创建、删除、重命名文件或目录。
File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径)

应用在哪里?

File 类广泛应用于各种需要与文件系统交互的场景,包括但不限于:

  • 文件管理:如创建、删除、移动文件或目录。
  • 路径操作:获取或设置文件的绝对路径、相对路径、父目录等。
  • 文件属性检查:确定文件是否存在、是文件还是目录、是否可读、可写、可执行等。
  • 文件列表:列出指定目录下的所有文件和子目录。

为什么用它?

File 类提供了一个统一的接口来访问底层文件系统,用以简化文件和目录的操作,避免直接与操作系统交互时可能遇到的复杂性和错误。但是File不能访问文件数据.

常见属性解析

public class FileDemo {public static void main(String[] args) {//使用File访问当前项目目录下的demo.txt文件/*创建File时要指定路径,而路径通常使用相对路径。相对路径的好处在于有良好的跨平台性。"./"是相对路径中使用最多的,表示"当前目录",而当前目录是哪里取决于程序运行环境而定,在idea中运行java程序时,这里指定的当前目录就是当前程序所在的项目目录。*/
//        File file = new File("c:/xxx/xxx/xx/xxx.txt");File file = new File("./demo.txt");//获取名字String name = file.getName();System.out.println(name);//获取文件大小(单位是字节)long len = file.length();System.out.println(len+"字节");//是否可读可写boolean cr = file.canRead();boolean cw = file.canWrite();System.out.println("是否可读:"+cr);System.out.println("是否可写:"+cw);//是否隐藏boolean ih = file.isHidden();System.out.println("是否隐藏:"+ih);}}

文件操作实践

创建新文件

createNewFile()方法,可以创建一个新文件

package file;import java.io.File;
import java.io.IOException;/*** 使用File创建一个新文件*/
public class CreateNewFileDemo {public static void main(String[] args) throws IOException {//在当前目录下新建一个文件:test.txtFile file = new File("./test.txt");//boolean exists()判断当前File表示的位置是否已经实际存在该文件或目录if(file.exists()){System.out.println("该文件已存在!");}else{file.createNewFile();//将File表示的文件创建出来System.out.println("文件已创建!");}}
}
删除指定文件

delete()方法可以将File表示的文件删除

package file;import java.io.File;/*** 使用File删除一个文件*/
public class DeleteFileDemo {public static void main(String[] args) {//将当前目录下的test.txt文件删除/*相对路径中"./"可以忽略不写,默认就是从当前目录开始的。*/File file = new File("test.txt");if(file.exists()){file.delete();System.out.println("文件已删除!");}else{System.out.println("文件不存在!");}}
}
创建新目录
  • mkDir():创建当前File表示的目录
  • mkDirs():创建当前File表示的目录,同时将所有不存在的父目录一同创建
package file;import java.io.File;/*** 使用File创建目录*/
public class MkDirDemo {public static void main(String[] args) {//在当前目录下新建一个目录:demo
//        File dir = new File("demo");File dir = new File("./a/b/c/d/e/f");if(dir.exists()){System.out.println("该目录已存在!");}else{
//            dir.mkdir();//创建目录时要求所在的目录必须存在dir.mkdirs();//创建目录时会将路径上所有不存在的目录一同创建System.out.println("目录已创建!");}}
}
删除指定目录

delete()方法可以删除一个目录,但是只能删除空目录。

package file;import java.io.File;/*** 删除一个目录*/
public class DeleteDirDemo {public static void main(String[] args) {//将当前目录下的demo目录删除File dir = new File("demo");
//        File dir = new File("a");if(dir.exists()){dir.delete();//delete方法删除目录时只能删除空目录System.out.println("目录已删除!");}else{System.out.println("目录不存在!");}}
}
访问目录中文件

访问一个目录中的所有子项
listFiles方法可以访问一个目录中的所有子项

package file;import java.io.File;/*** 访问一个目录中的所有子项*/
public class ListFilesDemo1 {public static void main(String[] args) {//获取当前目录中的所有子项File dir = new File(".");/*boolean isFile()判断当前File表示的是否为一个文件boolean isDirectory()判断当前File表示的是否为一个目录*/if(dir.isDirectory()){/*File[] listFiles()将当前目录中的所有子项返回。返回的数组中每个File实例表示其中的一个子项*/File[] subs = dir.listFiles();System.out.println("当前目录包含"+subs.length+"个子项");for(int i=0;i<subs.length;i++){File sub = subs[i];System.out.println(sub.getName());}}}
}
获取目录中符合特定条件的子项

重载的listFiles方法:File[] listFiles(FileFilter)

该方法要求传入一个文件过滤器,并仅将满足该过滤器要求的子项返回。

package file;import java.io.File;
import java.io.FileFilter;/*** 有条件的获取一个目录中的子项*/
public class ListFilesDemo2 {public static void main(String[] args) {//获取当前目录下的所有文本文件(文件名是以".txt"结尾的)File dir = new File(".");if(dir.isDirectory()){
//            FileFilter fileFilter = new FileFilter() {
//                public boolean accept(File f) {
//                    return f.getName().endsWith(".txt");
//                }
//            };
//            /*
//                重载的listFiles方法要求传入一个文件过滤器
//                该方法会将File对象表示的目录中所有满足过滤器条件的子项返回
//             */
//            File[] subs = dir.listFiles(fileFilter);File[] subs = dir.listFiles(f->f.getName().endsWith(".txt"));for(File sub : subs){System.out.println(sub.getName());}}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Kubernetes Master节点:集群控制中心的解析
  • ARM——驱动——inmod加载内核模块
  • 微信小程序:点击事件(bindtap)传递参数
  • 新版本 | GreatSQL 8.0.32-26全新发布 增强“四高”诸多新特性
  • Python常用内置函数(二)
  • Java重修笔记 第四十天 List集合、ArrayList集合
  • Vue 3 的 emit 简单使用
  • 驱动开发系列13 - Linux Graphics 图形驱动概述(二)
  • SQL手工注入漏洞测试(MongoDB数据库)
  • Xmind 在线导图上线!多设备实时同步,节约本地空间
  • 【Kotlin】在Kotlin项目中使用AspectJ
  • Python核心编程--Python要点总结
  • Swift 内存管理:精通强、弱、无主之地
  • IOS半越狱工具nathanlr越狱教程
  • 计算机毕业设计选题推荐-Cosplay论坛系统-Java/Python项目实战
  • [译] 怎样写一个基础的编译器
  • ECMAScript6(0):ES6简明参考手册
  • Electron入门介绍
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java应用性能调优
  • magento2项目上线注意事项
  • Mybatis初体验
  • MySQL的数据类型
  • Vue 2.3、2.4 知识点小结
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 动态规划入门(以爬楼梯为例)
  • 简析gRPC client 连接管理
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 模型微调
  • 配置 PM2 实现代码自动发布
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​Redis 实现计数器和限速器的
  • ​如何防止网络攻击?
  • ​虚拟化系列介绍(十)
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • (4)STL算法之比较
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (差分)胡桃爱原石
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十)Flink Table API 和 SQL 基本概念
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)h264中avc和flv数据的解析
  • (转)项目管理杂谈-我所期望的新人
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Reactor简单使用教程
  • .Net Web项目创建比较不错的参考文章
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET成年了,然后呢?