news 2026/9/3 2:00:18

【JavaSE】文件基础与File类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【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~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 1:32:48

基于SpringBoot+Vue的Web足球青训俱乐部管理后台系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 足球青训俱乐部作为培养青少年足球人才的重要机构,其管理效率直接影响训练质量和学员发展。传统的人工管理方式存在信息记录不准确、数据更新滞后、资源调配效率低等问题,亟需一套信息化管理系统实现规范化运营。随着互联网技术的普及,基…

作者头像 李华
网站建设 2026/9/2 22:28:55

美国芯片再次靠华人拯救成功,重执芯片牛耳,华人的能力得到证明

华人陈立武担任Intel的CEO仅仅9个月就宣布1.8纳米工艺取得成功,并率先拿出了1.8纳米生产的处理器,而日前陈立武再次大动作,主动放下身段与GPU领头羊NVIDIA合作,意图重振PC业务,此举更代表着陈立武的务实和合作精神&…

作者头像 李华
网站建设 2026/9/2 22:28:51

Spring Boot 钩子全集实战(五):ApplicationContextInitializer详解

Spring Boot 钩子全集实战(五):ApplicationContextInitializer 详解 在上一篇中,我们深入剖析了 SpringApplicationRunListener.environmentPrepared() 这一关键扩展点,实现了环境合法性校验、启动上下文传递、多环境…

作者头像 李华