【Java】文件IO

news2024/9/21 12:36:56

文章目录

  • 一、什么是文件
  • 二、硬盘
    • 1. 机械硬盘
    • 2. 固态硬盘
  • 三、文件路径
  • 四、文件类型

文件
硬盘

系统管理文件,引入一个额专门的模块,“文件系统”,每个文件都有一个“路径”描述文件所在位置

一、什么是文件

此处谈到的文件,本身有多重含义

狭义的文件,特质硬盘上的文件(以及保存文件的目录)

  • 目录就是平时所说的“文件夹”,专业术语叫“目录”,目录也是属于文件

广义的文件,计算机上的很多硬件设备软件资源,在操作系统中,都会被视为“文件”

  • 标准输入(键盘,System. in)
  • 标准输出(控制台,System. out)
  • 打印机
  • 网卡,操作网络的代码,和操作普通文件,都是非常相似的

二、硬盘

硬盘和内存的对比

空间速度成本数据
硬盘持久储存
内存断电后丢失

为什么硬盘的速度慢?


这和它硬件的物理结构直接相关

当下硬盘主要分两类:

1. 机械硬盘

  • 盘片
    • 存储数据的介质
    • 通电之后,就会快速旋转,转速影响到读取数据的速度(7200 转/min、5200 转/min…)
  • 磁头:
    • 可以移动到盘片上的仍以位置进行数据读写
    • 数据的读写时,盘片一边高速旋转,磁头一边不停移动,两者相互配合,完成数据的读写操作

机械硬盘在进行顺序读写时,效率是相对比较高的,因为磁头不用动,盘片高速旋转就好了
但是在随机读写(指哪打哪)的时候,效率就比较低。因为会涉及到磁头移动,就需要克服惯性去做功

在服务器领域,机械硬盘仍然是一个主流的应用场景

机械应盘自己不要拆开!一旦拆开,就报废了。机械硬盘的拆解和维修必须在专门的无尘环境下进行
否则上面落灰尘之后,之后磁盘运行,高速旋转的盘片和移动的磁头将与灰尘碰撞,产生一个很大的冲量,从而将磁头破坏

2. 固态硬盘

  • 大部分电脑上都是这个
  • 更接近于“内存”通过大规模的集成电路,实现的存储功能
  • 固态硬盘能比机械硬盘快 10-20 倍左右
  • 机械硬盘典型的速度,每秒读写 300MB 左右
  • 固态硬盘,每秒达到 3G-6G 都是不难的,好一点的固态,速度能达到 7G-8G

如果你要买固态硬盘,一方面要关注存储容量,也要关注读写速度

对于硬盘来说,尤其是机械硬盘,擅长顺序读写,不擅长随机读写。虽然在固态硬盘上有所改善,但整体来说,固态硬盘的随机读写能力,仍然是非常逊色于内存的

三、文件路径

在一个电脑上,有很多文件,都是需要考操作系统,进行组织管理的
操作系统专门有一个模块,“文件系统

  • 一般是通过“文件资源管理器”这个程序,观察到文件系统管理的文件,就是“此电脑

文件系统上的目录结构,是一个“树形结构”,不是二叉树,是“N叉树”
image.png
基于上述的结构,我们就可以找到某个文件在电脑上的具体位置
路径中,就约定使用分隔符,分割目录和目录:

  • \(反斜杠)
  • /(斜杠)
    绝大部分系统,都是使用斜杠 \ 作为目录的分隔符,只有 Windows 两种斜杠都能用

路径,也可以认为是文件的一种身份标识,通过标识,区分出唯一的一个文件

表示路径的两种风格

  • 绝对路径,从盘符开始,一直到文件名结束(D:\My Computer\02 Stricky\02 Code\03 IDEA\Gitee\java_code
  • 相对路径,谈到相对路径,必然有一个“参考系”,就是有一个“基准路径”或“工作路径”,如果基准目录不同,对应的相对路径也是不同的
    • 比如,此时正在 D:\My Computer\02 Stricky\02 Code\03 IDEA\Gitee\java_code 目录下,要在此目录下找到 240811-Thread 文件,就只需要输入 .\240811-Thread

作为程序员,常用的路径形式都是相对路径。因为绝对路径只适合自己的机器,一旦把你的代码换到比尔呢的机器上,如果代码依赖绝对路径,就可能你自己的电脑上能跑,别人的电脑上跑不起来(这里的绝对路径只在你自己电脑上存在,别人的机器上不存在)

一个程序能正常运行,不仅仅取决于代码,也取决于代码的运行环境。(操作系统版本,第三方库,配置文件,其他目录文件,硬件设备…)

四、文件类型

文本文件.txt/.c/.java

  • 当前文件里存储的所有内容都是“文本”(合法的字符)
  • 虽然叫做文本文件,本质上内部存的还是二进制(0101010),但这些二进制数据都“有据可查”,都可以在字符集中找到合法合理的字符

二进制文件.docx/.exe/.dll/.mp3/.mp4/.class

  • 对应的,文件内容在字符集对应的表格中查不到合法合理的字符

[!quote] 字符编码方式(字符集)
中文 UTF8/GBK,字符编码都是很大的“表格”

一个简单粗暴的方式,判断是什么文件:

  • 直接使用记事本打开这个文件,不是乱码,就是文本文件,否则就是二进制文件

针对文本文件来说,其实 Java 已经进行了很多的内置处理。虽然文本文件底层仍然是二进制存储,Jav 啊把文本文件取出来的时候,自动查询码表,把二进制内容一个个转换成字符。而二进制文件则没有上述的转换过程

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

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

相关文章

SQL Zoo 8+.NSS Tutorial

以下数据来自SQL Zoo 1.at Edinburgh Napier University,studying (8) Computer Science,Show the the percentage who STRONGLY AGREE.(在爱丁堡纳皮尔大学,学习“计算机科学”,显示STRONGLY AGREE的百分比&#xff0…

解决navicat隔一段时间连接(操作,查询)就卡顿问题Navicat老是卡死,必须强制退出

解决方法: 打开编辑--->高级--->设置心跳时间30s(输入框设置为30 (建议30-240之间,不要超过240)– 点击确定!) 问题: 使用 Navicat 连接服务器上的数据库时,如果隔一段时间没有使用&…

餐厅管理系统

目录 一、 系统简介 1.1需求分析 餐厅管理系统是一个基于Javaweb的系统,旨在为音乐餐厅、情侣餐厅和中餐厅提供全面的管理和服务功能。系统主要包括餐厅详情管理、价格管理和加入购物车功能。 1.2 编程环境与工具 二、 系统总体设计 2.1 系统的功能模块图…

[log4cplus]: 快速搭建分布式日志系统

关键词: 日志系统 、日志分类、自动分文件夹、按时间(月/周/日/小时/分)轮替 一、引言 这里我默认看此文的我的朋友们都已经具备一定的基础,所以,我们本篇不打算讲关于log4cplus的基础内容,文中如果涉及到没有吃透的点,需要朋友们动动自己聪明的脑袋和发财的手指,进一…

C++进阶中多态的全部主要内容

今天小编和大家一起学习C中多态的全部主要内容,希望今天大家和小编一起学习之后,会对多态有一个初步的了解和使用,好啦,话不多说,开始学习!~~~ 一、多态的概念及满足条件 概念:指的就是不同的对…

NC单链表的排序

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定一个节点…

九、OpenCVSharp 中的图像形态学操作

文章目录 简介一、腐蚀1. 腐蚀的原理和数学定义2. 结构元素的形状和大小选择3. 腐蚀操作的代码实现和效果展示二、膨胀1. 膨胀的概念和作用2. 与腐蚀的对比和组合使用(如开运算、闭运算)三、开运算1. 开运算的定义和用途(去除小的明亮区域)2. 开运算在去除噪声和分离物体方…

鸿蒙(API 12 Beta3版)【扩展屏投播开发指导】使用投播组件

通过本节开发指导,可在系统镜像投屏后,获取投屏设备信息,实现扩展屏模式的投播,实现双屏协作的能力。 运作机制 虚拟扩展屏 是在系统投屏启动过程中建立的,依据双端协商的投屏视频流的分辨率创建,支持1080…

OpenHarmony图像解码库—stb-image【GN编译】

简介 stb_image主要是C/C实现的图像解码库。 下载安装 直接在OpenHarmony-SIG仓中搜索stb-image并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 库代码存放路径:./third_party/stb-image 修改添加依赖的编译脚本,路径:/devel…

哈希 | Java | (hot100) 力扣 49

我的想法:双重forhashset 方法一 由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。 力扣官方 values()方法返回一个包含HashMap中所有…

高性能日志系统 日志器模块

概述 作用:整合输出模块和格式化模块,创建日志器,通过该日志器对日志进行输出成员 格式化模块对象管理输出模块对象管理,数组管理(日志器可能会向多个位置进行日志输出)默认日志输出限制等级,只…

springboot智能城市交通管理系统-计算机毕业设计源码55174

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

React + React-tsparticles + Tsparticles完成炫酷的登录特效

效果(动态) npm i react-tsparticles2.12.2 npm i tsparticles2.12.0 注意:最好和上面的版本一样,不然会出现一个报错,具体如何解决的话去官网吧,上面的版本是没有问题的 代码块 总计6个代码块, options里面是相关粒子的配置 完整代码 import ./index.sass import { Form, Inp…

5个人共享一台高配工作站流程运行SW UG等软件大装配设计

如何实现5个人共享一台高配工作站流程运行SW UG等软件大装配设计? 一、前期准备 硬件准备: 选购一台高性能的服务器作为云主机,确保服务器具备足够的计算能力、内存和存储空间以支持多用户并发使用。云主机需要结合企业具体的使用情况和人数…

基于vue框架的哀牢犁耙会助农系统r4347(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,商品分类,商品信息 开题报告内容 基于Vue框架的哀牢犁耙会助农系统 开题报告 一、研究背景与意义 1.1 研究背景 随着科技的飞速发展,农业现代化已成为全球农业发展的重要趋势。传统的农业生产方式已难以满足现代农…

windows使用vscode和cmake编译报错error C2001: 常量中有换行符

报错图: 解决方法:修改通过编码保存的格式为GBK

微信小程序--23(条件渲染)

一、wx&#xff1a;if 1.作用 来判断是否需要渲染 2.语句 wx&#xff1a;if “{{condition}}”来判断是否需要渲染该代码块 wx&#xff1a;elifwx&#xff1a;else 用来添加else判断 3.演示 二、<block> wx&#xff1a;if 1.作用 <block>标签&#xff1a;…

4章7节:用R做数据重塑,数据去重和数据的匹配

在数据科学的分析流程中&#xff0c;数据重塑是一项非常重要的操作。数据的重塑通常指将数据从一种形式转换为另一种形式&#xff0c;以满足后续分析的需求。R语言提供了丰富的工具和函数来帮助用户高效地进行数据重塑操作。本文中&#xff0c;我们将深入探讨数据重塑的概念及其…

假如你正在备考六西格玛黑带,请看我的推文

众所周知&#xff0c;红宝书是备考六西格玛黑带的经典教材之一。那么&#xff0c;如何用红宝书高效备考六西格玛黑带呢&#xff1f;天行健六西格玛培训讲师总结如下&#xff1a; 1. 熟悉六西格玛概念&#xff1a;首先&#xff0c;你需要对六西格玛的基本概念有一个清晰的了解。…

智启万象|挖掘广告变现潜力,保障支付安全便捷

谷歌致力于为开发者提供 先进的广告变现与支付解决方案 一起回顾 2024 Google 开发者大会 了解如何利用谷歌最新工具和功能 提高变现收入&#xff0c;优化用户体验&#xff0c;保障交易安全 让变现更上一层楼 广告检查器是谷歌 AdMob 平台最新推出的高级测试工具&#xff0c;开…