IO、存储、硬盘、文件系统核心常识总结

目录

前言

[一、基础概念:IO、存储、硬盘 是什么](#一、基础概念:IO、存储、硬盘 是什么)

[1. IO 是什么](#1. IO 是什么)

[2. 存储的层级划分](#2. 存储的层级划分)

[3. 硬盘是什么](#3. 硬盘是什么)

[二、重点核心:文件系统(File System)](#二、重点核心:文件系统(File System))

[1. 什么是文件系统](#1. 什么是文件系统)

[2. 文件系统能干什么](#2. 文件系统能干什么)

[3. 常见文件系统类型](#3. 常见文件系统类型)

[Windows 常用](#Windows 常用)

[Linux 常用](#Linux 常用)

移动设备

[4. 文件系统核心结构](#4. 文件系统核心结构)

(1)磁盘分区

[(2)块 / 簇](#(2)块 / 簇)

[(3)inode 节点(Linux 重点)](#(3)inode 节点(Linux 重点))

(4)目录树形结构

[5. 文件系统 如何读写文件(全过程)](#5. 文件系统 如何读写文件(全过程))

[6. 文件系统 和 Java IO 的关系](#6. 文件系统 和 Java IO 的关系)

[三、IO、内存、硬盘、文件系统 整体关系总结](#三、IO、内存、硬盘、文件系统 整体关系总结)

四、博客总结


前言

平时我们写 Java IO、读写文件、复制文件、上传下载,底层都离不开:IO 流程 → 内存 → 硬盘 → 文件系统。很多人只会写代码,不懂底层原理,一旦遇到乱码、文件损坏、路径问题、分区挂载就懵了。

这篇博客从基础到核心,先讲 IO、存储、硬盘,重点深挖文件系统,通俗易懂,适合学习总结、作业提交、面试复习。


一、基础概念:IO、存储、硬盘 是什么

1. IO 是什么

IO:Input / Output 输入输出

  • 输入:从外部设备读数据到内存(读文件、读网络、读键盘)
  • 输出:从内存写数据到外部设备(写文件、发网络、打印)

Java 中所有文件读写、字节流、字符流、缓冲流,本质都是内存和硬盘之间的 IO 交互

2. 存储的层级划分

计算机存储分两大类:

  1. 内存(主存)

    • 断电数据丢失
    • 速度极快、容量小、价格贵
    • 程序运行时数据都先加载到内存
  2. 外存(辅存)

    • 断电数据不丢失
    • 速度慢、容量大、便宜
    • 典型:机械硬盘 HDD、固态硬盘 SSD、U 盘、移动硬盘

IO 本质:内存 ↔ 外存(硬盘)的数据搬运。

3. 硬盘是什么

硬盘就是永久存储数据的硬件载体

  • 机械硬盘 HDD:靠磁道、扇区旋转读写,速度慢、便宜
  • 固态硬盘 SSD:闪存芯片,无机械结构,速度快、寿命长

关键常识:裸硬盘只能存储 0 和 1 二进制数据,没有文件名、没有文件夹、没有路径 ,电脑无法直接使用,必须格式化并安装文件系统才能正常存放和管理文件。

所以必须要有:文件系统


二、重点核心:文件系统(File System)

1. 什么是文件系统

文件系统是操作系统管理硬盘数据的一套规则和组织结构

一句话:

裸硬盘只是一堆二进制空位,文件系统负责把硬盘分区、规划空间、管理文件、管理目录、记录文件位置大小权限

没有文件系统:

  • 不能分文件夹
  • 不能有文件名、后缀
  • 不能保存文件大小、修改时间
  • 我们没法按路径 D:/a/b.txt 访问文件

2. 文件系统能干什么

  1. 把硬盘划分分区、块、簇
  2. 管理文件、目录(文件夹) 树形结构
  3. 记录文件元信息:文件名、大小、创建时间、修改时间、权限、存放位置
  4. 负责文件创建、删除、复制、移动、查找
  5. 控制磁盘空间分配与回收

3. 常见文件系统类型

Windows 常用

  • FAT32:老格式,最大单文件 4GB,兼容性好
  • NTFS:Windows 默认,支持大文件、权限、加密、压缩、日志容错

Linux 常用

  • Ext3、Ext4:Linux 主流日志文件系统,稳定、高性能
  • xfs:大容量服务器常用

移动设备

  • exFAT:U 盘、移动硬盘,突破 4GB 限制,跨 Windows/Mac

4. 文件系统核心结构

(1)磁盘分区

一块硬盘可以分成多个分区:C 盘、D 盘、E 盘每个分区独立使用一个文件系统

(2)块 / 簇

文件系统把整个分区拆分成无数个最小存储单元

  • Windows 叫「簇」
  • Linux 叫「块」

文件占用空间按整簇分配 ,哪怕文件只有 1 字节,也要占一整簇。这就是文件实际大小 < 磁盘占用大小 的原因。

(3)inode 节点(Linux 重点)

Linux 文件系统核心就是 inode

  • inode 存放文件元信息:大小、权限、时间、磁盘块位置
  • 文件名放在目录里,文件内容在数据块
  • 删除文件本质:只是删除目录条目,标记 inode 可复用,数据还在磁盘上(恢复文件原理)

(4)目录树形结构

文件系统把所有文件组织成倒立树形结构

  • 根目录 /下级子目录、子文件
  • Windows:C:\Users\xxx\Desktop
  • Linux:/home/xxx/

5. 文件系统 如何读写文件(全过程)

  1. 应用程序(Java 程序)发起 IO 请求,要读 a.txt
  2. 操作系统交给文件系统
  3. 文件系统根据路径,查目录、查 inode / 文件分配表
  4. 找到文件在硬盘的物理块位置
  5. 驱动控制硬盘把数据读到内存
  6. 程序从内存拿到数据
    写文件反过来:程序 → 内存 → 文件系统分配磁盘块 → 写入硬盘 → 更新文件元信息。

6. 文件系统 和 Java IO 的关系

  • Java 只能操作文件系统提供的抽象文件 / 路径
  • java.io.FilePath、流读写,全部依赖底层文件系统
  • 路径分隔符、大小写敏感、权限、文件能否删除、能否覆盖,都由文件系统决定
    • Windows 不区分大小写
    • Linux 严格区分大小写

三、IO、内存、硬盘、文件系统 整体关系总结

  1. 硬盘:物理硬件,只存原始二进制
  2. 文件系统:给硬盘做规则管理,分区、建目录、管文件、记位置
  3. 内存:程序运行缓冲区,IO 必须经过内存中转
  4. IO:完成内存与硬盘之间的数据读写交互

层级从上到下:Java 程序 → IO 流 → 操作系统 → 文件系统 → 硬盘驱动 → 物理硬盘


四、博客总结

  1. IO 即输入输出,是内存与外部设备的数据交换,Java 文件读写本质都是磁盘 IO。
  2. 存储分为内存(断电丢失、高速)和外存(硬盘 / U 盘,永久存储)。
  3. 硬盘是物理存储硬件,裸盘无法直接管理文件,依赖文件系统格式化后才能使用。
  4. 文件系统是操作系统管理磁盘的规则体系,负责分区、空间分配、目录树形结构、文件元信息管理、文件增删改查。
  5. 常见文件系统有 Windows 的 NTFS、FAT32,Linux 的 Ext4、xFS,移动设备 exFAT。
  6. 文件系统通过簇 / 块、inode、目录结构管理磁盘空间,所有 Java 文件编程、路径操作、权限控制都依赖底层文件系统。
相关推荐
XiYang-DING1 天前
【Java EE】UDP 编程核心类与方法
单片机·udp·java-ee
Zzzzmo_3 天前
计算机网络原理初识
计算机网络·java-ee
Zzzzmo_4 天前
【JavaEE】文件操作和IO
java·java-ee·io·文件操作·file·流对象
XiYang-DING4 天前
【Java EE】JUC的常见类(Callable、ReentrantLock、Semaphore和CountDownLatch )
java·java-ee
田超凡7 天前
深入理解MySQL_8 索引Index(I)
mysql·java-ee
XiYang-DING8 天前
【Java EE】CAS(Compare And Swap)
java·开发语言·java-ee
XiYang-DING9 天前
【Java EE】定时器
java·python·java-ee
XiYang-DING10 天前
【Java EE】锁策略、锁升级、锁消除和锁粗化
java·redis·java-ee
Bat U10 天前
JavaEE|多线程(六)
java·java-ee