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

news2024/9/22 13:40:05

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

目录

  • 一、IO简介
    • 1.IO流
  • 二、存储
  • 三、硬盘
  • 四、文件系统
    • 1、文件类型:
    • 2、文件路径:
    • 3、文件属性:
    • 4、访问权限:
    • 5、文件操作:
    • 6、文件格式:
    • 7、文件编码:
    • 8、文件压缩:
    • 9、相对路径:
    • 10、绝对路径:
    • 11、文本文件和非文本文件

一、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 等)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1932867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

appium2.0 执行脚本遇到的问题

遇到的问题: appium 上的日志信息: 配置信息 方法一 之前用1.0的时候 地址默认加的 /wd/hub 在appium2.0上, 服务器默认路径是 / 如果要用/wd/hub 需要通过启动服务时设置基本路径 appium --base-path/wd/hub 这样就能正常执行了 方法二…

HarmonyOS NEXT学习——@BuilderParam装饰器

初步理解,相当于VUE的插槽slot Builder function overBuilder() {}Component struct Child {label: string ChildBuilder customBuilder() {}Builder customChangeThisBuilder() {}BuilderParam customBuilderParam: () > void this.customBuilder; // 使用自定…

【TDA4板端部署】基于 Pytorch 训练并部署 ONNX 模型在 TDA4

1 将torch模型转onnx模型 Ti转换工具只支持以下格式: Caffe - 0.17 (caffe-jacinto in gitHub) Tensorflow - 1.12 ONNX - 1.3.0 (opset 9 and 11) TFLite - Tensorflow 2.0-Alpha 基于 Tensorflow、Pytorch、Caffe 等训练框架,训练模型:选择…

Hadoop3:HDFS存储优化之小文件归档

一、情景说明 我们知道,NameNode存储一个文件元数据,默认是150byte大小的内存空间。 那么,如果出现很多的小文件,就会导致NameNode的内存占用。 但注意,存储小文件所需要的磁盘容量和数据块的大小无关。 例如&#x…

【5G Sub-6GHz模块】专为IoT/eMBB应用而设计的RG520NNA、RG520FEB、RG530FNA、RG500LEU 5G模组

推出全新的5G系列模组: RG520NNADB-M28-SGASA RG520NNADA-M20-SGASA RG520FEBDE-M28-TA0AA RG530FNAEA-M28-SGASA RG530FNAEA-M28-TA0AA RG500LEUAA-M28-TA0AA ——明佳达 1、5G RG520N 系列——专为IoT/eMBB应用而设计的LGA封装模块 RG520N 系列是一款专为 IoT…

Kafka Producer发送消息流程之Sender发送线程和在途请求缓存区

文章目录 1. Sender发送数据1. 发送数据的详细过程:2. 关键参数配置 2. 在途请求缓存区 1. Sender发送数据 Sender线程负责将已经在RecordAccumulator中准备好的消息批次发送到Kafka集群。虽然消息在RecordAccumulator中是按照分区组织的,但Sender线程在…

百日筑基第二十三天-23种设计模式-创建型总汇

百日筑基第二十三天-23种设计模式-创建型总汇 前言 设计模式可以说是对于七大设计原则的实现。 总体来说设计模式分为三大类: 创建型模式,共五种:单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式,共…

【JavaEE】synchronized原理详解

本文使用的是JDK1.8 目录 引言 Java对象在JVM的结构 对象头 Mark Word Monitor Owner EntryList WaitSet 加锁过程 锁消除 偏向锁 偏向锁使用 重偏向 撤销偏向 轻量级锁 重量级锁 自旋优化 引言 对于synchronized原理讲解之前,我们需要知道Java对象…

如何通过DBC文件看懂CAN通信矩阵

实现汽车CAN通信开发,必不可少要用到DBC文件和CAN通信矩阵。 CAN通信矩阵是指用于描述 CAN 网络中各个节点之间通信关系的表格或矩阵。它通常记录了每个节点能够发送和接收的消息标识符(ID)以及与其他节点之间的通信权限。 通信矩阵在 CAN 网…

Redis中数据分片与分片策略

概述 数据分片是一种将数据分割并存储在多个节点上的技术,可以有效提高系统的扩展性和性能。在Redis中,数据分片主要用于解决单个实例存储容量和性能瓶颈的问题。通过将数据分散存储到多个Redis节点中,可以将负载均衡到不同的服务器上&#…

防火墙之双机热备篇

为什么要在防火墙上配置双机热备技术呢? 相信大家都知道,为了提高可靠性,避免单点故障 肯定有聪明的小伙伴会想到那为什么不直接多配置两台防火墙,然后再将他们进行线路冗余,不就完成备份了吗? 答案是不…

UDP客户端、服务端及简易聊天室实现 —— Java

UDP 协议(用户数据包协议) UDP 是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接,简单来说,当客户端向接收端发送数据时,客户端不会确认接收端是否存在,就会发出…

【深度学习教程】

文章目录 pytorch官方教程知识蒸馏:https://pytorch.org/tutorials/beginner/knowledge_distillation_tutorial.html 李宏毅-机器学习/深度学习https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.phphttps://speech.ee.ntu.edu.tw/~hylee/ml/2022-spring.phphttp…

深入解析公有IP与私有IP:地址分配与使用限制

IP地址在网络基础设施的建设和维护过程中起着至关重要的作用。作为IP地址的两大类型,公有IP和私有IP各自具有独特的分配机制和使用限制。本文将详细分析两者之间的区别,以帮助读者更好地理解和使用IP地址。 1. 公有IP与私有IP概述 IP地址是网络中的唯一…

Spring Boot 中使用 Resilience4j 实现弹性微服务的简单了解

1. 引言 在微服务架构中,服务的弹性是非常重要的。Resilience4j 是一个轻量级的容错库,专为函数式编程设计,提供了断路器、重试、舱壁、限流器和限时器等功能。 这里不做过多演示,只是查看一下官方案例并换成maven构建相关展示&…

hexo搭建博客(github node git )(失败版本)

HexoGitHub搭建个人博客教程(2023最新版) 搭建失败了 是因为git命令一直报错 打算明天把git和node版本全部重新安装后再弄 同时回顾一下github git 和 node的基础知识 Github新手之路(全过程)(站在前辈的肩膀上的总…

使用 ABBYY FineReader PDF 15 在创建或转换 PDF 时自动生成书签

使用 ABBYY 为 PDF 文件添加书签,可以帮助快速定位文档中的主要内容,也能更方便的梳理出一份文档大纲。 有很多 PDF 文件在创建时并没有编辑书签,这里介绍使用 ABBYY FineReader PDF 15(Win 系统)在 PDF 中自动添加书…

两大国产多模态大模型推荐

GLM-4V 智谱AI 开放平台提供一系列具有不同功能和定价的大模型,包括通用大模型、超拟人大模型、图像大模型、向量大模型等,并且支持使用您的私有数据对模型进行微调。GLM-4V 就是在不牺牲任何NLP任务性能的情况下,实现了视觉语言特征的深度融…

网络编程-TCP/IP

网络概述 网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。 每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务 网络体系结构…

【LeetCode】删除排序链表中的重复元素 II

目录 一、题目二、解法完整代码 一、题目 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,3,4,4,5] 输出:[1,2,5] 示例 …