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

Java——文件和目录操作

文件和目录操作1、构造方法2、文件元数据3、文件操作4、目录操作1、构造方法File既可以表示文件也可以表示目录它的主要构造方法有//pathname表示完整路径该路径可以是相对路径也可以是绝对路径publicFile(Stringpathname)//parent表示父目录child表示孩子publicFile(Stringparent,Stringchild)publicFile(Fileparent,Stringchild)File中的路径可以是已经存在的也可以是不存在的。通过new新建一个File对象不会实际创建一个文件只是创建一个表示文件或目录的对象new之后File对象中的路径是不可变的。2、文件元数据文件元数据主要包括文件名和路径、文件基本信息以及一些安全和权限相关的信息。文件名和路径相关的主要方法有publicStringgetName()//返回文件或目录名称不含路径名publicbooleanisAbsolute()//判断File中的路径是否是绝对路径publicStringgetPath()//返回构造File对象时的完整路径名包括路径和文件名称publicStringgetAbsolutePath()//返回完整的绝对路径名//返回标准的完整路径名它会去掉路径中的冗余名称如., ..跟踪软链接(Unix系统概念)等publicStringgetCanonicalPath()throwsIOExceptionpublicStringgetParent()//返回父目录路径publicFilegetParentFile()//返回父目录的File对象//返回一个新的File对象新的File对象使用getAbsolutePath()的返回值作为参数构造publicFilegetAbsoluteFile()//返回一个新的File对象新的File对象使用getCanonicalPath()的返回值作为参数构造publicFilegetCanonicalFile()throwsIOException这些方法比较直观我们就不解释了。File类中有4个静态变量表示路径分隔符它们是publicstaticfinalStringseparatorpublicstaticfinalcharseparatorCharpublicstaticfinalStringpathSeparatorpublicstaticfinalcharpathSeparatorCharseparator和separatorChar表示文件路径分隔符在Windows系统中一般为’‘, Linux系统中一般为’/‘。pathSeparator和pathSeparatorChar表示多个文件路径中的分隔符比如环境变量PATH中的分隔符Java类路径变量classpath中的分隔符在执行命令时操作系统会从PATH指定的目录中寻找命令Java运行时加载class文件时会从classpath指定的路径中寻找类文件。在Windows系统中这个分隔符一般为’; ‘在Linux系统中这个分隔符一般为’:。除了文件名和路径File对象还有如下方法以获取文件或目录的基本信息publicbooleanexists()//文件或目录是否存在publicbooleanisDirectory()//是否为目录publicbooleanisFile()//是否为文件publiclonglength()//文件长度字节数对目录没有意义publiclonglastModified()//最后修改时间从纪元时开始的毫秒数publicbooleansetLastModified(longtime)//设置最后修改时间返回是否修改成功需要说明的是File对象没有返回创建时间的方法因为创建时间不是一个公共概念 Linux/Unix就没有创建时间的概念。File类中与安全和权限相关的主要方法有publicbooleanisHidden()//是否为隐藏文件publicbooleancanExecute()//是否可执行publicbooleancanRead()//是否可读publicbooleancanWrite()//是否可写publicbooleansetReadOnly()//设置文件为只读文件//修改文件读权限publicbooleansetReadable(booleanreadable,booleanownerOnly)publicbooleansetReadable(booleanreadable)//修改文件写权限publicbooleansetWritable(booleanwritable,booleanownerOnly)publicbooleansetWritable(booleanwritable)//修改文件可执行权限publicbooleansetExecutable(booleanexecutable,booleanownerOnly)publicbooleansetExecutable(booleanexecutable)在修改方法中如果修改成功返回true否则返回false。在设置权限方法中owner-Only为true表示只针对owner为false表示针对所有用户没有指定ownerOnly的方法中ownerOnly相当于是true。3、文件操作文件操作主要有创建、删除、重命名。新建一个File对象不会实际创建文件但如下方法可以publicbooleancreateNewFile()throwsIOException创建成功返回true否则返回false新创建的文件内容为空。如果文件已存在不会创建。File对象还有两个静态方法可以创建临时文件publicstaticFilecreateTempFile(Stringprefix,Stringsuffix)throwsIOExceptionpublicstaticFilecreateTempFile(Stringprefix,Stringsuffix,Filedirectory)throwsIOException临时文件的完整路径名是系统指定的、唯一的但可以通过参数指定前缀prefix​、后缀suffix和目录directory​。prefix是必需的且至少要三个字符suffix如果为null则默认为tmp; directory如果不指定或指定为null则使用系统默认目录。File类的删除方法为publicbooleandelete()publicvoiddeleteOnExit()delete删除文件或目录删除成功返回true否则返回false。如果File是目录且不为空则delete不会成功返回false换句话说要删除目录先要删除目录下的所有子目录和文件。deleteOnExit将File对象加入到待删列表在Java虚拟机正常退出的时候进行实际删除。File类的重命名方法为publicbooleanrenameTo(Filedest)参数dest代表重命名后的文件重命名能否成功与系统有关返回值代表是否成功。4、目录操作当File对象代表目录时可以执行目录相关的操作如创建、遍历。有两个方法用于创建目录publicbooleanmkdir()publicbooleanmkdirs()它们都是创建目录创建成功返回true失败返回false。需要注意的是如果目录已存在返回值是false。这两个方法的区别在于如果某一个中间父目录不存在则mkdir会失败返回false而mkdirs则会创建必需的中间父目录。有如下方法访问一个目录下的子目录和文件publicString[]list()publicString[]list(FilenameFilterfilter)publicFile[]listFiles()publicFile[]listFiles(FileFilterfilter)publicFile[]listFiles(FilenameFilterfilter)它们返回的都是直接子目录或文件不会返回子目录下的文件。list返回的是文件名数组而listFiles返回的是File对象数组。FilenameFilter和FileFilter都是接口用于过滤 FileFilter的定义为publicinterfaceFileFilter{booleanaccept(Filepathname);}FilenameFilter的定义为publicinterfaceFilenameFilter{booleanaccept(Filedir,Stringname);}在遍历子目录和文件时针对每个文件会调用FilenameFilter或FileFilter的accept方法只有accept方法返回true时才将该子目录或文件包含到返回结果中。Filename-Filter和FileFilter的区别在于FileFilter的accept方法参数只有一个File对象而File-nameFilter的accept方法参数有两个dir表示父目录name表示子目录或文件名。我们来看个例子列出当前目录下的所有扩展名为txt的文件代码可以为FilefnewFile(.);File[]filesf.listFiles(newFilenameFilter(){Overridepublicbooleanaccept(Filedir,Stringname){if(name.endsWith(.txt)){returntrue;}returnfalse;}});我们创建了个FilenameFilter的匿名内部类对象并传递给了listFiles。使用遍历方法可以方便地进行递归遍历完成一些更为高级的功能。比如计算一个目录下的所有文件的大小包括子目录​代码可以为publicstaticlongsizeOfDirectory(finalFiledirectory){longsize0;if(directory.isFile()){returndirectory.length();}else{for(Filefile:directory.listFiles()){if(file.isFile()){sizefile.length();}else{sizesizeOfDirectory(file);}}}returnsize;}再如在一个目录下查找所有给定文件名的文件代码可以为publicstaticCollectionFilefindFile(finalFiledirectory,finalStringfileName){ListFilefilesnewArrayList();for(Filef:directory.listFiles()){if(f.isFile()f.getName().equals(fileName)){files.add(f);}elseif(f.isDirectory()){files.addAll(findFile(f,fileName));}}returnfiles;}前面介绍了File类的delete方法我们提到如果要删除目录而目录不为空需要先清空目录利用遍历方法我们可以写一个删除非空目录的方法代码可以为publicstaticvoiddeleteRecursively(finalFilefile)throwsIOException{if(file.isFile()){if(!file.delete()){thrownewIOException(Failed to delete file.getCanonicalPath());}}elseif(file.isDirectory()){for(Filechild:file.listFiles()){deleteRecursively(child);}if(!file.delete()){thrownewIOException(Failed to delete file.getCanonicalPath());}}}

相关文章:

Java——文件和目录操作

文件和目录操作1、构造方法2、文件元数据3、文件操作4、目录操作1、构造方法 File既可以表示文件,也可以表示目录,它的主要构造方法有: //pathname表示完整路径,该路径可以是相对路径,也可以是绝对路径 public File(…...

Vaultwarden Docker部署全攻略:自托管密码库的安全实践

1. 项目概述:从 Bitwarden 到 Vaultwarden 的演进之路如果你和我一样,是个密码管理工具的重度依赖者,那么 Bitwarden 这个名字你一定不陌生。作为一款开源的密码管理器,它以其跨平台、功能强大和免费(基础版&#xff0…...

ARM PMU性能监控架构与PMCEID2寄存器详解

1. ARM PMU性能监控架构概述性能监控单元(Performance Monitoring Unit, PMU)是现代处理器中用于硬件级性能分析的核心模块。在ARM架构中,PMU通过一组可编程的事件计数器实现对处理器微架构行为的精确监控。这些计数器可以记录诸如指令执行周期、缓存命中/失效、分支…...

Sidekiq监控测试终极指南:如何全面检测系统状态与性能

Sidekiq监控测试终极指南:如何全面检测系统状态与性能 【免费下载链接】sidekiq Simple, efficient background processing for Ruby 项目地址: https://gitcode.com/gh_mirrors/si/sidekiq Sidekiq作为Ruby生态中最流行的后台作业处理框架,其强大…...

基于电容触摸与接近传感的无接触MIDI控制器设计与实现

1. 项目概述与核心价值如果你玩过电子乐器,或者对音乐制作、交互装置感兴趣,那你一定对MIDI控制器不陌生。传统的MIDI控制器,无论是键盘、打击垫还是旋钮,大多依赖于物理接触——你得实实在在地按下去、扭动它。但有没有想过&…...

终极 ChatGPT-Google 扩展日志分析指南:深度洞察用户行为与功能使用统计 [特殊字符]

终极 ChatGPT-Google 扩展日志分析指南:深度洞察用户行为与功能使用统计 🔍 【免费下载链接】chatgpt-google-extension This project is deprecated. Check my new project ChatHub: 项目地址: https://gitcode.com/gh_mirrors/ch/chatgpt-google-ext…...

飞书文档批量导出终极指南:3步实现自动化文档迁移

飞书文档批量导出终极指南:3步实现自动化文档迁移 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 还在为飞书文档迁移而烦恼吗?飞书文档批量导出工具让你彻底告别手动下载…...

Display-Lock:智能防休眠工具的原理、实现与安全实践

1. 项目概述与核心价值最近在折腾一个挺有意思的玩意儿,叫Stateford/Display-Lock。乍一看这个项目名,可能有点摸不着头脑,但如果你是一个经常需要远程办公、或者对个人电脑的隐私和状态管理有强迫症的程序员或极客,那这个工具很可…...

终极PHPExcel性能优化指南:从512MB到1GB内存的突破技巧

终极PHPExcel性能优化指南:从512MB到1GB内存的突破技巧 【免费下载链接】PHPExcel ARCHIVED 项目地址: https://gitcode.com/gh_mirrors/ph/PHPExcel PHPExcel作为一款强大的PHP电子表格处理库,在处理大型数据时常常面临内存不足的挑战。本文将分…...

Node.js API错误处理库设计:标准化响应与中间件实践

1. 项目概述:为什么我们需要一个专门的API错误处理库?如果你写过一段时间的后端服务,尤其是基于RESTful或GraphQL的API,肯定对下面这种场景不陌生:客户端发来一个请求,你的服务因为某种原因(比如…...

Airbyte质量保证终极指南:10个关键策略确保数据管道代码质量与测试覆盖

Airbyte质量保证终极指南:10个关键策略确保数据管道代码质量与测试覆盖 【免费下载链接】airbyte Open-source data movement for ELT pipelines and AI agents — from APIs, databases & files to warehouses, lakes, and AI applications. Both self-hosted …...

CursorTouch融合交互:工业与医疗场景下人机协同新范式

1. 项目概述:从“CursorTouch/Operator-Use”看人机交互的范式革新最近在GitHub上看到一个名为“CursorTouch/Operator-Use”的项目,这个标题乍一看有点抽象,但作为一名长期关注人机交互(HMI)和工业自动化领域的老兵&a…...

京东自动抢购终极指南:Python脚本帮你告别“手慢无“的烦恼

京东自动抢购终极指南:Python脚本帮你告别"手慢无"的烦恼 【免费下载链接】autobuy-jd 使用python语言的京东平台抢购脚本 项目地址: https://gitcode.com/gh_mirrors/au/autobuy-jd 还在为心仪的商品总是抢不到而烦恼吗?当你看到"…...

Sidekiq工作分配与负载均衡终极指南:高效管理后台任务的10个技巧

Sidekiq工作分配与负载均衡终极指南:高效管理后台任务的10个技巧 【免费下载链接】sidekiq Simple, efficient background processing for Ruby 项目地址: https://gitcode.com/gh_mirrors/si/sidekiq Sidekiq是Ruby生态中最受欢迎的后台作业处理框架&#x…...

终极指南:ta-lib-python社区案例分享与实用应用技巧

终极指南:ta-lib-python社区案例分享与实用应用技巧 【免费下载链接】ta-lib-python Python wrapper for TA-Lib (http://ta-lib.org/). 项目地址: https://gitcode.com/gh_mirrors/ta/ta-lib-python ta-lib-python是一个强大的Python技术分析库,…...

如何使用Tutorial-Codebase-Knowledge实现Docker Swarm集群部署的终极指南

如何使用Tutorial-Codebase-Knowledge实现Docker Swarm集群部署的终极指南 【免费下载链接】Tutorial-Codebase-Knowledge Pocket Flow: Codebase to Tutorial 项目地址: https://gitcode.com/gh_mirrors/tu/Tutorial-Codebase-Knowledge Tutorial-Codebase-Knowledge&a…...

科技早报晚报|2026年5月14日:调试工作台、Agent 证据格式与多智能体编排,今晚更值得做成产品的 3 个技术机会

科技早报晚报|2026年5月14日:调试工作台、Agent 证据格式与多智能体编排,今晚更值得做成产品的 3 个技术机会 一句话导读:今晚真正值得看的,不是又一个“更会写代码”的 Agent,而是 AI 工具链开始补上的三块…...

FPGA技术知识管理:构建个人阅读仓库,实现体系化学习与创新

1. 项目概述:FPGA技术文献的体系化阅读与知识管理在数字电路设计和硬件加速领域,FPGA(现场可编程门阵列)以其独特的并行处理能力和硬件可重构性,始终占据着技术演进的前沿。然而,与成熟的软件生态不同&…...

Go语言算法复杂度分析:时间与空间

Go语言算法复杂度分析:时间与空间 1. 复杂度表示 // O(1) - 常数时间 func getFirstElement(arr []int) int {return arr[0] }// O(n) - 线性时间 func findMax(arr []int) int {max : arr[0]for _, v : range arr {if v > max {max v}}return max }// O(n^2) -…...

ARM GICv3中断控制器系统寄存器解析与应用

1. ARM GICv3中断控制器系统寄存器深度解析在ARMv8-A架构的嵌入式系统中,中断控制器扮演着至关重要的角色。作为硬件中断信号的中枢管理系统,GIC(Generic Interrupt Controller)从v3版本开始进行了革命性的架构革新,其…...

yargs状态机:终极复杂命令流程管理指南

yargs状态机:终极复杂命令流程管理指南 【免费下载链接】yargs yargs the modern, pirate-themed successor to optimist. 项目地址: https://gitcode.com/gh_mirrors/ya/yargs 🚀 你是否曾为Node.js命令行工具的复杂参数解析而烦恼?…...

GSE-Advanced-Macro-Compiler:重新定义魔兽世界技能管理的智能编排系统

GSE-Advanced-Macro-Compiler:重新定义魔兽世界技能管理的智能编排系统 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. 项目地址: https://gitcode.com/gh_mirrors/gs/GSE-Advan…...

掌握PRML中的贝叶斯推断:MCMC采样实战指南

掌握PRML中的贝叶斯推断:MCMC采样实战指南 【免费下载链接】PRML PRML algorithms implemented in Python 项目地址: https://gitcode.com/gh_mirrors/pr/PRML 贝叶斯推断是机器学习中的核心技术之一,而马尔可夫链蒙特卡洛(MCMC&#…...

深入解析 gRPC:高性能开源 RPC 框架的原理与实战

深入解析 gRPC:高性能开源 RPC 框架的原理与实战 文章目录深入解析 gRPC:高性能开源 RPC 框架的原理与实战引言一、gRPC 概览二、核心技术解析1. HTTP/2:传输层的革命2. Protocol Buffers:高效的序列化与契约3. 四种服务方法&…...

Nginx静态网站托管终极指南:5分钟极速部署HTML/CSS/JS网站

Nginx静态网站托管终极指南:5分钟极速部署HTML/CSS/JS网站 【免费下载链接】server-configs-nginx Nginx HTTP server boilerplate configs 项目地址: https://gitcode.com/gh_mirrors/se/server-configs-nginx 想要快速部署静态网站吗?Nginx服务…...

Agent史上最全八股,来啦!

涉及到 RAG、MCP、Skills 等 12 个方向,共计 200 多个问题。 因为最近一段时间,我越来越明显地感觉到,前端 AI 方面的面试已经越来越倾向语 AI 化了。 以前很多同学去面试,面试官问的还是比较浅的东西。 你用过哪些大模型&#xf…...

【maaath】 Flutter for OpenHarmony 饮水水质监测应用开发实战

Flutter for OpenHarmony 饮水水质监测应用开发实战欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net 作者:maaath一、引言 随着人们对健康饮水的关注度日益提升,水质监测已成为日常生活中不可或缺的一部分。无论是家庭…...

测试Leader的进阶困境:从管事到管人,再到管战略

在软件测试领域,从一名优秀的测试工程师晋升为测试Leader,往往被视为职业生涯的一次重要跃迁。然而,这场跃迁并非终点,而是一段更为复杂、充满挑战的旅程的开端。许多新晋测试Leader很快就会发现,自己陷入了一种前所未…...

丹诺医药开启招股:拟募资6亿港元 5月22日上市 无营收,年亏1.5亿

雷递网 雷建平 5月14日丹诺医药(苏州)股份有限公司(简称:“丹诺医药”,股票代码:“06872”)日前开启招股,准备2026年5月22日在港交所上市。丹诺医药发售价75.70港元,发行…...

SolidityPy全课程:从零到一的区块链智能合约开发终极指南

SolidityPy全课程:从零到一的区块链智能合约开发终极指南 【免费下载链接】full-blockchain-solidity-course-py Ultimate Solidity, Blockchain, and Smart Contract - Beginner to Expert Full Course | Python Edition 项目地址: https://gitcode.com/gh_mirro…...