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

Java 中的File类

路径分为绝对路径和相对路径。

相对路径肯定是相对谁来说的,一般是一个文件相对于另外一个文件而言的路径。

下面是一个例子,比如index.htm如何找到photo.jpg呢?

c:/website/web/index.htm
c:/website/img/photo.jpg

所以在index.htm中使用绝对路径的话就是../img/photo.jpg。

./表示当前文件所在的目录。也可以省略不写。

../表示当前文件所在目录的父目录,就是上一级目录,在c:/website/web/index.htm中就是c:/website,再和相对路径进行拼接就是绝对路径了。

在下面这个代码中aaa其实是./aaa,也就是File1所在的目录按说应该是D:\JavaWorkspace\File\src\com\liu,但是在IDEA中却不是这样,是相对于模块来说的,即./所表示的是D:\JavaWorkspace\File。

public class File1 {public static void main(String[] args) throws IOException {File file = new File("aaa");file.mkdirs();
}

IDEA目录结构(从高到低):Project(项目)→Module(模块)→Package(包)→Java文件
IDEA默认当前路径为Project的路径。

IDEA中的项目和模块的可以参考下面这张图:

关于IDEA中写相对路径时,报错(系统找不到指定的路径)_idea中相对路径找不到文件-CSDN博客

将字符串转换为其他类的对象,比如File类,还有常用的时间类。

如何转换,有3个构造方法。

3个构造方法的参数分别是(路径)、(父级路径,子级路径)、(父级路径的File对象,子级路径)。

细节:在创建的时候是不关心路径存不存在的。

以及常用方法:

(1)获取与File对象有关的有一些信息。

所表示的路径是否存在?exist。所表示的路径是文件夹还是文件?如果所表示的路径根本不存在,则直接返回false。本来想查看源码验证一下,但是看不懂,算了。

length():文件的字节大小,不能获取文件夹的大小。

getAbsolutePath:获取绝对路径。

getPath:返回定义时的路径。

getName:要时刻注意当前File对象所表示的路径是文件还是文件夹。如果是文件夹则返回文件夹的名字,如果是文件,则返回文件名+后缀名,如a.txt。

(2)对文件或文件夹进行操作:增删查

关于createNewFile()方法:它表示创建一个空的文件,但是却没有参数,那文件的名字如何确定呢?是默认提供的吗?好像也不是。

具体步骤应该是这样的,即当前File对象所表示的路径是否是文件?

在此方法中一般都会把文件夹看作文件,比如\bbb,会看作一个没有后缀的bbb文件,而不是文件夹,谁说文件一定要有后缀名呢。所以createNewFile()方法只能创建一个文件,不能创建文件夹。

当前File对象所表示的路径是否存在?如果不存在就创建一个,存在则不创建并返回false。

如果当前路径的父级路径并不存在,运行时会报IOException异常。

mkdir():创建文件夹。

有一个问题:Windows操作系统中,路径是唯一的。比如一个文件夹下有一个文件为bbb,此时想创建一个bbb的文件夹是不会成功的,因为它们两个的路径都是\bbb,这在Windows中是不被允许的。因此这个问题也就延伸到了Java中。

而且mkdir()这个方法只能创建单级文件夹,不能创建多级文件夹,比如想在已有的aaa文件夹下创建还没存在的ccc\ddd就是错的。

但是Java中肯定也提供了相应的方法,比如mkdirs(),就可以创建多级文件夹。但是mkdirs()也是可以创建单级文件夹的,那mkdir()这个方法岂不是没有存在的必要了,答案是的,那为什么还有学呢?因为mkdirs()这个方法的底层其实用到了mkdir()。

还有一个删除的方法delete,首先分删除的是文件还是文件夹,如果是文件,不管空不空,直接删,如果是文件夹则需要考虑文件夹下是否有内容,是空文件夹则删除成功,有内容的文件夹此方法删不了。

并且此方法删除的东西是不经过电脑的回收站的。

遍历文件夹listFiles(),返回结果是一个数组,数组中的内容是路径。

Array.toString()方法,将数组以字符串的形式进行输出。这个方法的底层跟之前写的一模一样。

相关文章:

Java 中的File类

路径分为绝对路径和相对路径。 相对路径肯定是相对谁来说的,一般是一个文件相对于另外一个文件而言的路径。 下面是一个例子,比如index.htm如何找到photo.jpg呢? c:/website/web/index.htmc:/website/img/photo.jpg 所以在index.htm中使用…...

java将map转json字符串或者再将json字符串转回map,java将对象转json字符串或者互想转换,对象集合和json字符串互转

1.导入hutool工具依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>2.直接复制一下代码运行 import cn.hutool.json.JSONUtil;import java.util.Ar…...

数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)

数据库管理225期 2024-07-30 数据库管理-第225期 Oracle DB 23.5新特性一览&#xff08;20240730&#xff09;1 二进制向量维度格式2 RAC上的复制HNSW向量索引3 JSON集合4 JSON_ID SQL函数5 优化的通过网络对NVMe设备的Oracle的原生访问6 DBCA支持PMEM存储7 DBCA支持标准版高可…...

提高生产效率:最佳7大Bug记录工具

本文将分享2024年值得关注的7款Bug记录工具&#xff1a;PingCode、Worktile、禅道、Tapd、CODING、JIRA、Bugzilla。 Bug的管理和跟踪是一个不断挑战的任务&#xff0c;而一个高效的Bug记录工具不仅可以提高团队的生产效率&#xff0c;还能显著降低项目延误的风险。选择合适的工…...

DDOS攻击学习 - kali初学

文章目录 本地ssh配置nmap(网络连接的工具)nmap -sP IP地址nmap -p 1-65535 -A IP地址主机发现Ping扫描端口扫描时序扫描常用扫描方式 指纹识别与探测全端口版本探测防火墙/IDS逃逸报文分段 信息收集IP信息收集WHOIS查询 数据库渗透测试MySQL列举数据库列举MySQL变量 发起请求目…...

【C++】类和对象——流插入和流提取运算符重载

目录 前言ostream和istream自定义类型的流插入重载自定义类型的流提取重载解决私有问题日期类总接口 前言 我们在上一节实现日期类时&#xff0c;在输入和输出打印时&#xff0c;经常会调用两个函数&#xff1a; void Insert()//输入函数{cin >> _year;cin >> _mo…...

Vmware ubuntu20.04 虚拟文件夹

目录 1.vmware 设置 2.ubuntu设置 1.vmware 设置 设置完成后我们开机 2.ubuntu设置 我们打开终端 输入命令 vmware-hgfsclient可以看到你当前的共享文件 然后我们输入以下命令&#xff0c;用于将共享文件夹挂载到虚拟机中 sudo vmhgfs-fuse .host:/ /mnt -o nonempty -o …...

人工智能学习笔记 - 初级篇Ⅱ - 图形可视化 - 第11节: 绘制带填充区域的图表

微信公众号&#xff1a;御风研墨 关注可了解更多。问题或建议&#xff0c;请公众号留言 文章目录 绘制带填充区域的图表应用背景准备工作操作步骤工作原理补充说明最后 绘制带填充区域的图表 应用背景 在数据可视化中&#xff0c;带填充区域的图表可以有效地表示数据范围、趋…...

使用STM32实现一个线性代数计算器

文章目录 背景挑战与困难如何整合编译&#xff1f;error: non-ASM statement in naked function is not supportederror: #pragma import is an ARM Compiler 5 extension, and is not supported by ARM Compiler 6error: redefinition of __FILE 改造demo中的cout改造delete运…...

我在高职教STM32——串口通信(4)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正因如此,才有了借助 CSDN 平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思的教学设计分享…...

Redis 缓存中间件 缓存数据库

Redis 缓存中间件 缓存数据库 nginx web服务 PHP 转发动态请求 tomcat web页面也可以转发动态请求 springboot 自带tomcat 所有的数据库不支持高并发&#xff0c;一旦访问量激增&#xff0c;数据库很快就会崩溃。 Redis 非关系型数据库 nosql not only sql 不仅仅是sql 键值对…...

51、PHP 实现简单的快速排序

题目&#xff1a; PHP 实现简单的快速排序 描述&#xff1a; function simpleQuickSort(array $list) {$length count($list);if( $length < 1){return $list;}else{$pivot $list[0];$left_list array();$right_list array();for($i 1; $i < $length; $i){if($lis…...

如何应对机器视觉软件中时间篡改与许可绕过的挑战?

在机器视觉行业&#xff0c;软件许可绕过和时间篡改问题存在&#xff0c;这些行为对企业的正常运营和市场竞争力造成了严重威胁。机器视觉软件通常包含复杂的算法和大量的数据处理能力&#xff0c;广泛应用于制造、医疗和安防等领域。然而&#xff0c;未经授权的使用和人为篡改…...

python文件的读写

要在Python中读写文件&#xff0c;你可以使用以下方法&#xff1a; 1. 打开文件&#xff1a;使用open()函数打开文件&#xff0c;它接受两个参数&#xff1a;文件名和模式。模式可以是只读&#xff08;r&#xff09;、写入&#xff08;w&#xff09;、追加&#xff08;a&#…...

2024下《网络工程师》案例简答题,刷这些就够了!

距离2024下半年软考已经越来越近了&#xff0c;不知道今年备考软考网络工程师的同学们开始准备了吗&#xff1f; 简答题一直是网工拿分的重点区域&#xff0c;对于许多考生来说&#xff0c;也往往是最具挑战性的部分。今天我就把那些重要的案例简答题类型整理汇总给大家&#x…...

Astro 实现TodoList网页应用案例

Astro 是一个现代化的静态站点生成器和前端框架&#xff0c;它具有独特的设计理念&#xff1a;岛屿架构。它允许开发人员使用组件化的方式构建内容优先的网站&#xff0c;将各种技术栈&#xff08;如React、Vue、Svelte等&#xff09;的组件无缝集成到同一个项目中。 1、创建项…...

计算机毕业设计Hadoop+Spark旅游景点可视化 旅游景点推荐系统 景区游客满意度预测与优化 Apriori算法 景区客流量预测 旅游大数据 景点规划

### 开题报告 **论文题目&#xff1a;** 基于Spark的旅游景点可视化系统的设计与实现 **研究背景与意义&#xff1a;** 随着旅游业的快速发展&#xff0c;人们对旅游信息的获取和处理需求越来越高。传统的旅游信息系统虽然能够提供静态的数据查询和展示功能&#xff0c;但在…...

MySQL存储

目录 1. MySQL存储引擎概述 2. 存储引擎的作用 3.存储引擎类型 4. 查看支持的存储引擎 6. InnoDB存储引擎 7. MyISAM与InnoDB的区别 8. 存储引擎的选择 9. 修改默认存储引擎 1. MySQL存储引擎概述 在MySQL中&#xff0c;数据通过不同的技术存储在文件&#xff08;或内存…...

手势传感器 - 从零开始认识各种传感器【第十八期】

手势传感器|从零开始认识各种传感器 1、什么是手势传感器 手势传感器是一种能够感知人类手势或动作的传感器。它可以捕捉、识别和解释人类的手部动作或姿势&#xff0c;并将其转换成电信号或数字信号&#xff0c;通过识别人体的手势动作来实现与电子设备的交互&#xff0c;如控…...

【未来餐饮】 配送设置

一、创建门店 关键信息 1. 门店名字要有辨识度&#xff0c;尽量不和其他客户重名 2. 地址要具体到门牌号 3. 定位要和上面的地址一致 可以复制地址搜索地图&#xff0c;然后选择位置 二、创建配送模板 新建模板 填写模板 命名模板&#xff0c;勾上真省钱&#xff0c;然后保…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...