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

【JavaSE】文件基础与File类

在日常开发中,我们几乎每天都在和“文件”打交道:读取配置文件、写日志、上传下载文件……
但很多时候,我们对“文件”的理解其实是比较模糊的,这篇文章我们将从文件的基本概念出发,重新了解一下文件~

1. 文件基础

1.1 文件与路径的基本概念

在实际开发中,我们经常需要和文件打交道,比如读取配置文件、写日志、上传下载文件等。因此,在学习 Java IO 之前,有必要先对“文件”本身有一个基本认识。

通常我们说的文件,是指保存在硬盘上的数据。需要注意的是,程序并不能直接操作硬盘这样的硬件资源,而是通过操作系统提供的“文件”这一抽象概念,间接完成对磁盘数据的读写。

1.2 路径的表示方式

为了在磁盘上定位某一个文件,操作系统引入了目录的概念

多个目录相互嵌套,最终形成一棵树形结构,从根目录出发,经过若干级目录,最终定位到目标文件。

这一整条“查找路径”,就是我们所说的文件路径

路径中一般使用/作为目录分隔符:

  • Linux / macOS 使用/
  • Windows 默认使用\,但同样支持/

在实际开发中,通常统一使用/,可以减少跨平台时的兼容问题。

1.3 绝对路径与相对路径

路径又可以分为两类:

绝对路径

从根目录(或盘符)开始,一直描述到目标文件的位置,例如:

C:/Users/xxx/Desktop/test.txt

绝对路径定位明确,但灵活性较差。

相对路径

相对于某一个基准目录来表示路径,例如:

./test.txt

其中:

  • .表示当前目录
  • ..表示当前目录的上一层

需要注意的是,相对路径必须依赖基准目录
在 Java 程序中,这个基准目录通常是 JVM 的工作目录,因此同一段代码在不同运行环境下,可能会出现“本地能跑,服务器找不到文件”的情况。

1.4 文件的类型

从开发角度来看,通常将文件分为两类:

  • 文本文件:内容可以按字符语义进行解析,例如.txt.java.xml
  • 二进制文件:内容按字节存储,需要特定程序解释,例如图片、音频、视频

二者的区别不在于“有没有意义”,而在于是否按照字符来理解文件内容

1.5 重命名与移动的本质

renameTo方法既可以用于重命名文件,也可以用于移动文件。

在操作系统层面,这两种操作的本质是一样的:
修改文件在目录树中的位置映射

  • 如果在同一磁盘内移动,开销很小,速度很快
  • 如果跨磁盘移动,则会退化为“复制 + 删除”,性能明显下降

这一点在处理大文件时尤为明显

2. File 类

Java 提供了java.io.File类,用于操作文件系统

需要强调的是:

File 类并不负责文件内容的读写

它的主要作用包括:

  • 判断文件或目录是否存在
  • 创建、删除文件
  • 创建目录
  • 重命名或移动文件

真正的文件读写,需要通过输入流、输出流来完成

有了文件,接下来我们来介绍一下IO~

http://www.jsqmd.com/news/217581/

相关文章:

  • SpringBoot+Vue “衣依”服装销售平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • Thinkphp的农贸市场摊位 夜市摊位租赁系统设计与实现
  • Claude Code 永动机:ralph-loop 无限循环迭代插件详解(安装 / 原理 / 最佳实践 / 避坑)
  • Java SpringBoot+Vue3+MyBatis 学科竞赛管理系统源码|前后端分离+MySQL数据库
  • Thinkphp的吉他谱分享平台的设计与实现
  • Java SpringBoot+Vue3+MyBatis 墙绘产品展示交易平台系统源码|前后端分离+MySQL数据库
  • Thinkphp的基于协同过滤算法的动漫推荐系统
  • 前后端分离IT交流和分享平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • SpringBoot + Aviator + 规则中心:轻量级表达式引擎实现营销优惠动态计算
  • Thinkphp的基于协同过滤算法的音乐推荐系统
  • 前后端分离ONLY在线商城系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 前后端分离“衣依”服装销售平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • SpringBoot+Vue 海滨体育馆管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 探索 qCumber 单元测试框架
  • SpringBoot+Vue 墙绘产品展示交易平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • Java Web 网上租赁系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 基于SpringBoot+Vue的Web足球青训俱乐部管理后台系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • Java SpringBoot+Vue3+MyBatis 师生健康信息管理系统系统源码|前后端分离+MySQL数据库
  • 二叉树高频题目
  • 【HarmonyOS NEXT】多线程并发-taskpool
  • 大数据领域数据架构的发展趋势洞察
  • 在 Linux 发行版中安装 Times New Roman 字体
  • n8n 满分漏洞 Ni8mare 可导致服务器遭劫持
  • 【配电网重构】基于混合整数二阶锥配电网重构研究(Matlab代码实现)
  • [特殊字符]_内存管理深度解析:如何避免GC导致的性能陷阱[20260108170807]
  • [特殊字符]_压力测试与性能调优的完整指南[20260108171530]
  • 今天智谱上市,成为全球大模型第一股!
  • 今天智谱上市,成为全球大模型第一股!
  • 小米集团2025千万技术大奖正式颁发,自研芯片玄戒O1斩获最高奖项
  • MATLAB实现流形正则化主题模型LapPLSI算法详解