news 2026/9/26 2:09:28

【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/9/21 5:07:32

Thinkphp的吉他谱分享平台的设计与实现

目录研究背景与意义系统设计目标技术实现要点创新与特色应用价值项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理研究背景与意义 随着音乐爱好者的增多,吉他谱共享需求日益增长。传统分享方式效率低、资源分散,亟需一个专业…

作者头像 李华
网站建设 2026/9/21 22:29:54

SpringBoot+Vue 墙绘产品展示交易平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着城市化进程的加快和艺术文化的普及,墙绘艺术逐渐成为城市美化的重要组成部分,同时也催生了墙绘产品展示与交易的市场需求。传统的墙绘交易模式依赖线下渠道,存在信息不对称、交易效率低等问题。为了解决这些问题,本研究设…

作者头像 李华
网站建设 2026/9/20 21:17:14

【Git核心操作实战】从初始化到冲突解决与回滚(附完整演示)

文章目录目录引言环境准备一、仓库初始化与首次提交1.1 初始化 Git 仓库1.2 创建 .gitignore 文件1.3 首次提交技术解析二、分支创建与多轮小步提交2.1 切出 feature 分支2.2 2-3 次小步提交第一次提交:新增功能基础文件第二次提交:实现核心逻辑第三次提…

作者头像 李华
网站建设 2026/9/14 20:30:12

基于CNN的车牌识别网络

前期准备 这篇博客记录神经网络方法与应用的实验项目,项目开源链接:【免费】神经网络课程设计项目.zip资源-CSDN下载 数据集 数据集是我本人在百度飞桨网站上找到的,这个数据集整理的很全面详细,数据集信息包含10w张训练照片&a…

作者头像 李华
网站建设 2026/9/22 16:48:17

Java Web Web足球青训俱乐部管理后台系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 足球青训俱乐部管理后台系统的开发旨在解决传统足球青训俱乐部在管理学员信息、课程安排、教练分配等方面效率低下的问题。随着足球运动的普及和青训体系的完善,俱乐部需要一套高效、智能化的管理系统来优化运营流程。传统的人工记录和Excel表格管理方式容易导…

作者头像 李华
网站建设 2026/9/25 20:37:48

TypeScript 的本质并非类型,而是信任

我有一支技术全面、经验丰富的小型团队,专注高效交付中等规模外包项目,有需要外包项目的可以联系我静态类型悄悄修好的,不只是语法错误,而是你们的精神状态。老实说,我第一次听到 TypeScript 的时候,脑子里…

作者头像 李华