JavaEE初阶 - IO、存储、硬盘、文件系统相关常识 (二)

🎇🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!
人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习!
欢迎志同道合的朋友一起加油喔 💪💪💪
目标梦想:进大厂,立志成为一个牛掰的Java程序猿,虽然现在还是一个🐒嘿嘿
谢谢你这么帅气美丽还给我点赞!比个心

目录

一、IO简介

IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。
IO 操作通常涉及读取和写入数据。在计算机系统中,IO 操作可能涉及内存与外部设备之间的数据交换,也可能涉及 CPU 与外部设备之间的数据交换。IO 可分为同步 IO 和异步 IO。同步 IO 在操作完成前会阻塞执行线程,而异步 IO 允许执行线程在操作完成前继续执行其他任务。

1.IO流

数据传输过程类似于水流,因此称为 IO 流。
在 Java 中,I/O 流是通过使用 java.io 包中的类和接口来实现的。
IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。

Java IO 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。

  • InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。
  • OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。

I/O 流在 Java 中具有层次化的结构,主要分为以下四种类型:
字节流:字节流用于处理原始二进制数据,以字节为单位进行读写操作。字节流的基类是 InputStream(输入流)和 OutputStream(输出流)。字节流通常用于处理非文本数据,如图片、音频和视频文件。
字符流:字符流用于处理文本数据,以字符为单位进行读写操作。字符流的基类是 Reader(输入流)和 Writer(输出流)。字符流通常用于处理文本文件,它可以自动处理字符编码和解码,从而简化文本操作。
缓冲流:缓冲流在内部维护一个缓冲区,通过减少对底层数据源或目的地的直接访问次数,从而提高 I/O 操作的性能。缓冲流的主要类是 BufferedInputStream、BufferedOutputStream、BufferedReader 和 BufferedWriter。
数据流:数据流用于处理 Java 基本数据类型和字符串的 I/O 操作。数据流可以方便地将 Java 数据类型和字符串读写到流中,同时保留其原始格式和类型。数据流的主要类是 DataInputStream 和 DataOutputStream。
I/O 流的操作通常需要处理异常(如 IOException)。在操作完成后,应始终关闭流以释放系统资源。在 Java 7 及更高版本中,可以使用try-with-resources 语句自动关闭流。
总之,I/O 流是 Java 中处理输入和输出数据的核心概念。通过使用不同类型的流(如字节流、字符流、缓冲流和数据流),可以灵活地处理各种数据源和目的地之间的数据传输。了解 I/O 流及其相关类和接口有助于编写高效、可扩展的 Java 程序。

二、存储

存储是计算机系统中用于保存和访问数据的组件。存储可以分为以下两类:
主存储(内存):主存储是计算机系统的临时存储区域,用于存储正在执行的程序和相关数据。主存储通常由随机访问存储器(RAM)组成,具有较高的数据访问速度。RAM 可以分为静态 RAM(SRAM)和动态 RAM(DRAM)。SRAM 速度较快但成本较高,而 DRAM 速度较慢但成本较低。当计算机断电时,主存储中的数据会丢失。
辅助存储(外部存储):辅助存储是计算机系统的永久存储区域,用于长期保存数据和程序。辅助存储设备包括硬盘驱动器(HDD)、固态硬盘(SSD)、光盘、闪存盘等。辅助存储设备的访问速度相对较慢,但它们在断电后仍能保留数据。

三、硬盘

  1. 硬盘接口的分类:

    硬盘接口通常分为五种类型:SATA接口硬盘、IDE接口硬盘、SCSI接口硬盘、光纤通道硬盘、SAS接口硬盘。

    IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而光纤通道只在高端服务器上,价格昂贵。SATA是目前比较流行的的硬盘接口类型,目前市场上最普及的接口类型。

  2. 硬盘的分类:

    硬盘分为固态硬盘(SSD 盘)、机械硬盘(HDD)、混合硬盘(HHD)三种。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。

四、文件系统

文件是计算机系统中用于存储和组织数据的基本单位。以下是关于文件的一些概念的详细描述:

1、文件类型:

文件类型是标识文件所含数据类型和格式的一种方式。常见的文件类型包括文本文件(如.txt和.docx),用于存储文字;图片文件(如.jpg和.png),用于存储图像;音频文件(如.mp3),用于存储音频内容;视频文件(如.mp4),用于存储视频内容;以及可执行文件(如.exe),用于运行软件或应用程序。

2、文件路径:

文件路径是指文件在计算机或存储设备上的具体位置,通常由驱动器号、目录结构和文件名组成。了解文件路径的基本知识对于有效地管理文件、执行脚本和进行故障排除是非常重要的。

3、文件属性:

文件具有多种属性,如文件名、大小、创建时间、修改时间和访问权限等。操作系统和文件系统通过这些属性来管理和跟踪文件。

①名称:文件名称唯一,以容易读取的形式保存。

②标识符:标识文件系统内文件的唯一标签,通常为数字,它是对人不可读的一种内部名称。

③类型:被支持不同类型的文件系统所使用。

④位置:指向设备和设备上文件的指针。

⑤大小:文件当前大小(用字节、字或块表示),也可包含文件允许的最大值。

⑥保护:对文件进行保护的访问控制信息。

⑦时间、日期和用户标识:文件创建、上次修改和上次访问的相关信息,用于保护、 安全和跟踪文件的使用。

所有文件的信息都保存在目录结构中,而目录结构也保存在外存上。文件信息当需要时再调入内存。通常,目录条目包括文件名称及其唯一标识符,而标识符定位其他属性的信息。

4、访问权限:

为了保护文件的安全和完整性,操作系统通常会对文件实施访问权限控制。文件的访问权限可以分为读取、写入和执行等级别。不同的用户和用户组可能具有不同的访问权限。

5、文件操作:

操作系统和应用程序通过文件操作来读取、修改和管理文件。常见的文件操作包括创建、打开、关闭、读取、写入、重命名、删除、复制和移动等。这些操作通常通过操作系统提供的文件操作接口(如系统调用或库函数)实现。

6、文件格式:

文件格式是文件中数据的组织和表示方式。不同类型的文件可能采用不同的文件格式。例如,文本文件可以采用 ASCII 或 Unicode 编码,图片文件可以采用 JPEG、PNG 或 GIF 格式,音频文件可以采用 MP3 或 WAV 格式等。了解文件格式有助于更好地处理和转换文件数据。

7、文件编码:

文件编码是将字符数据转换为二进制数据的过程。常见的文件编码包括 ASCII、UTF- 8、UTF-16 和 UTF-32 等。选择正确的文件编码对于保证文件内容的正确显示和处理至关重要。

8、文件压缩:

文件压缩是一种减小文件大小的方法,以节省存储空间和加快文件传输速度。文件压缩可以采用无损压缩或有损压缩方法。无损压缩保留了原始数据的完整性,而有损压缩可能会丢失部分数据以换取更高的压缩率。常见的文件压缩格式包括 ZIP、RAR 和 7z 等。

9、相对路径:

相对路径是基于当前工作目录或其他参考目录的文件路径。它表示文件与当前目录或参考目录之间的相对位置。相对路径通常更短,且在移动文件或目录时更具灵活性。然而,要正确解析相对路径,必须知道相对于哪个目录。
. 表示当前目录。
两个.表示上一级目录。

10、绝对路径:

绝对路径是文件在文件系统中的完整位置,从根目录开始。绝对路径提供了文件的确切位置,不依赖于当前工作目录或其他参考目录。然而,绝对路径通常较长,且在移动文件或目录时可能需要更新。

补充:Windows/Linux小知识点

Windows:D:\Soft\QQ\Plugin

Linux: D:/Soft/QQ/Plugin

注意: Windows各个文件之间分隔符为:" \ ";Linux各个文件之间分割符为:" / "

补充:IDEA默认的当前路径是?

工程Project的根就是IDEA的默认当前路径

11、文本文件和非文本文件

计算机中,根据文件内容的表示方式和组织结构,文件可以分为文本文件和非文本文件。以下是关于文本文件和非文本文件的详细描述:
文本文件:文本文件包含人类可读的文本字符,通常使用某种字符编码(如 ASCII、UTF-8、UTF-16 等)将字符数据转换为二进制数据。文本文件可以用普通的文本编辑器(如 Notepad、TextEdit 或 Vim 等)打开和编辑。文本文件通常具有换行符(如\n或\r\n)来分隔文件中的行。
文本文件的示例包括:
纯文本文件(如 .txt、.log、.md 等)

代码文件(如 .c、.java、.py 等)

配置文件(如 .ini、.conf 等)

标记语言文件(如 .html、.xml、.json 等)

非文本文件:非文本文件包含不是人类可读的文本字符的数据,而是采用特定的文件格式来组织和表示数据。非文本文件不能用普通文本编辑器打开,需要使用特定的应用程序或库来解析和处理。
非文本文件的示例包括:
图像文件(如 .jpg、.png、.gif 等)

音频文件(如 .mp3、.wav、.ogg 等)

视频文件(如 .mp4、.avi、.mkv 等)

可执行文件(如 .exe、.dll、.so 等)

压缩文件(如 .zip、.rar、.7z 等)

文档文件(如 .pdf、.docx、.pptx 等)

相关推荐
L0CK8 分钟前
RESTful风格解析
java
程序员小假17 分钟前
我们来说说 ThreadLocal 的原理,使用场景及内存泄漏问题
java·后端
何中应19 分钟前
LinkedHashMap使用
java·后端·缓存
tryxr27 分钟前
Java 多线程标志位的使用
java·开发语言·volatile·内存可见性·标志位
talenteddriver32 分钟前
java: Java8以后hashmap扩容后根据高位确定元素新位置
java·算法·哈希算法
云泽80835 分钟前
STL容器性能探秘:stack、queue、deque的实现与CPU缓存命中率优化
java·c++·缓存
yyy(十一月限定版)41 分钟前
c语言——栈和队列
java·开发语言·数据结构
本地运行没问题1 小时前
基于Java注解、反射与动态代理:打造简易ORM框架
java
ss2731 小时前
Java线程池全解:工作原理、参数调优
java·linux·python
麦麦鸡腿堡1 小时前
Java_MySQL介绍
java·开发语言·mysql