Java文件IO操作知识点

关于文件
        关于IO的定义

I:input输入 O:output输出,这是一套人为规定的规则,下面这个图方便我们理解输入输出的定义,统一以CPU为基准

    在操作系统中其实把很多的资源都抽象成文件,我们在这里所说的文件就是"狭义"文件,平时保存在硬盘上的文件,

        文件夹也是一种文件,我们称之为目录文件,在硬盘上存储着很多文件和目录,目录之间又存在这一套嵌套关系,这整个结构是一个树形结构N叉树,

路径

相对路径:起点可以是任意路径, 一个.表示当前路径的位置,两个..可以回退到上个路径

绝对路径:起点只能是此电脑,以盘符开头      

文本文件和二进制文件  

文本文件是合法的字符串,每个字符都是合法的,文本文件中的"二进制数据"能够构成合法的字符,字符集有GBK,UTF8,都对应一个码表,啥样的数字就对应啥样字符,这个码表只包含了一小部分二进制数据,这些被包含了的字符,并且是有意义的我们称之为文本文件,还有很多没有被包含,没有意义是一堆乱码的我们称之为二进制文件

如何区分一个文件是文本文件(可以看懂)还是二进制文件(乱码我们看不懂):可以将文件用记事本打开即可,对后续代码编写具有重要作用

使用Java进行文件操作
1)对文件系统进行操作

创建文件,删除文件,创建目录,重命名文件 使用标准库中的File

代码演示 

绝对路径的情况

相对路径的情况

创建文件可能会抛出异常,抛出异常的原因:1)非法路径,2)没有权限

可以发现当文件创建好之后会在idea中新增一个文件

2)对文件内容进行操作

读文件,写文件,打开文件,关闭文件

Java中通过"流"这样的一组类,来进行上述的文件内容操作,分为字节流和字符流

字节流:outputStream,inputStream,以字节为单位,处理二进制文件

InputStream是一个抽象类,不能实例化一个对象,我们需要通过子类来实例化,使这个类变成具体的类,

我们可以通过FileInputStream来实例化对象,同时需要抛出异常,因为这个文件可能不存在

read方法有三个,第一个是每一次读取一个字节,但是返回值是int,查看一下文档注释,因为是文字所以是无符号Byte范围从0-255,都是正数,没有负数,所以使用int类型来做为返回值接收,当读取到文件结束时会返回-1作为文件结束标志,

这个方法更高效,能够减少IO次数比起第一个方法,大大提升了效率 

close关闭文件,关闭文件也是一个核心操作,因为我们在打开文件的时候,会在操作系统内核PCB结构体中,给"文件描述符表"中新增一个元素,这个"文件描述符表",有具体大小存在上限 不会自动扩容,如果内存满了再次打开文件就会失败,所以关闭文件是非常重要的,多个线程共用同一份文件描述符表,当然文件描述符表也是可以进行配置的

try with resources,try里面必须是实现Closeable接口的类,自动调用close

OutStream

最重要的操作是写操作write,只要以OutStream的方式打开文件都会把之前文件内容给清空,默认方式打开会清空文件,我们要以追加的方式来打开文件,需在构造方法中把append这个参数设置为true,

字符流:Readr,Writer,以字符为单位,处理文本文件

read,

write

在Java当中内部类型采取的编码方式也会有不同,char是Unicode(2个字节)而String是utf8(3个字节),Java内部会自动转码

核心操作:1)通过构造方法打开文件,2)通过read方法来读取文件,3)通过write方法来写文件,4)通过close方法来关闭文件

关于文件IO操作的具体代码案例
案例一:搜索文件

案例二:复制文件

案例三:在文件中搜索关键字

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

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

相关文章

「iOS」自定义cell与cell的复用

iOS学习 前言一:TableView协议二:cell的复用Cell的复用原理自定义cell总结 前言 UITableView是iOS开发中不可或缺的一部分,它是苹果iOS SDK提供的一种用于展示数据列表的视图控件。我们对其中的cell进行自定义,即可得到我们需要的…

Python 实现股票指标计算——BBI

BBI (Bull And Bear lndex) - 多空指标 1 公式 3日均价 3日收盘价之和 / 36日均价 6日收盘价之和 / 612日均价 12日收盘价之和 / 1224日均价 24日收盘价之和 / 24BBI (3日均价 6日均价 12日均价 24日均价) / 4 2 数据准备 我们以科创50指数 000688 为例&#xff0c…

Qt 学习第一天:安装VS和Qt

本人更换了一台新的电脑,使用联想电脑管家传输文件后没有安装VS,导致出现了以下问题: 疯狂查资料问人。弄了一个晚上加上午一个多小时之后,还是决定删掉原来的文件夹,重新下载一个 一、安装VS(Visual Stud…

算法项目报告:物流中的最短路径问题

问题描述 物流问题 有一个物流公司需要从起点A到终点B进行货物运输,在运输过程中,该公司需要途径多个不同的城市,并且在每个城市中都有一个配送站点。为了最大程度地降低运输成本和时间,该公司需要确定经过哪些配送站点&#xff…

Android:requestLayout、invalidate 和 postInvalidate 的区别

提醒:下面源码来自SDK里Android-34版本 一、requestLayout 点击查看requestLayout官网文档 1.1 requestLayout方法源码 /*** Call this when something has changed which has invalidated the* layout of this view. This will schedule a layout pass of the v…

C++ :友元类

友元类的概念和使用 (1)将类A声明为B中的friend class后,则A中所有成员函数都成为类B的友元函数了 (2)代码实战:友元类的定义和使用友元类是单向的 (3)友元类是单向的,代码实战验证 互为友元类 (1)2个类可以互为友元类,代码实战…

【LeetCode】二叉树的最大深度

目录 一、题目二、解法完整代码 一、题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 示例 2&#x…

Leetcode2160. 拆分数位后四位数字的最小和:

问题描述: 给你一个四位 正 整数 num 。请你使用 num 中的 数位 ,将 num 拆成两个新的整数 new1 和 new2 。new1 和 new2 中可以有 前导 0 ,且 num 中 所有 数位都必须使用。 比方说,给你 num 2932 ,你拥有的数位包括…

怎么剪辑音频文件?4款适合新的音频剪辑软件

是谁还不会音频剪辑?无论是个人音乐爱好者,还是专业音频工作者,我们都希望能找到一款操作简便、功能强大且稳定可靠的音频剪辑工具。今天,我就要为大家带来四款热门音频剪辑软件的体验感分享。 一、福昕音频剪辑 福昕音频剪辑是…

YOLO 模型基础入门及官方示例演示

文章目录 Github官网简介模式数据集Python 环境Conda 环境Docker 环境部署 CPU 版本官方 CLI 示例官方 Python 示例 任务目标检测姿势估计图像分类 Ultralytics HUB视频流示例 Github https://github.com/ultralytics/ultralytics 官网 https://docs.ultralytics.com/zhhttp…

【IEEE出版】第四届能源工程与电力系统国际学术会议(EEPS 2024)

第四届能源工程与电力系统国际学术会议(EEPS 2024) 2024 4th International Conference on Energy Engineering and Power Systems 重要信息 大会官网:www.iceeps.com 大会时间:2024年8月9-11日 大会…

2024年7月萤火虫航天为NASA发射8颗立方体卫星

作为美国宇航局立方体卫星发射计划的一部分,萤火虫航空航天公司于7月3日在该公司的阿尔法火箭上发射了八颗小型卫星。这枚名为“夏日噪音”的火箭于太平洋夏令时(PDT)晚上9点04分从加利福尼亚州范登堡空军基地的2号航天发射场成功升空。 立方…

解读vue3源码-响应式篇2

提示:看到我 请让我滚去学习 文章目录 vue3源码剖析reactivereactive使用proxy代理一个对象1.首先我们会走isObject(target)判断,我们reactive全家桶仅对对象类型有效(对象、数组和 Map、Set 这样的集合类型),而对 str…

【数学建模】多波束测线问题(持续更新)

多波束测线问题 问题 1建立模型覆盖宽度海水深度重叠长度重叠率 问题二问题三问题四 问题 1 与测线方向垂直的平面和海底坡面的交线构成一条与水平面夹角为 α \alpha α的斜线(如下图),称 α \alpha α为坡度。请建立多波束测深的覆盖宽度及…

Python代码,强化学习,深度学习

python代码编写,Python算法设计,强化学习优化,改进模型,训练模型,测试模型,可视化绘制,代编运行结果,交互多模型改进,预测模型,算法修改,Python包…

11.斑马纹列表 为没有文本的链接设置样式

斑马纹列表 创建一个背景色交替的条纹列表。 使用 :nth-child(odd) 或 :nth-child(even) 伪类选择器,根据元素在一组兄弟元素中的位置,对匹配的元素应用不同的 background-color。 💡 提示:你可以用它对其他 HTML 元素应用不同的样式,如 <div>、<tr>、<p&g…

利用PyTorch进行模型量化

利用PyTorch进行模型量化 目录 利用PyTorch进行模型量化 一、模型量化概述 1.为什么需要模型量化&#xff1f; 2.模型量化的挑战 二、使用PyTorch进行模型量化 1.PyTorch的量化优势 2.准备工作 3.选择要量化的模型 4.量化前的准备工作 三、PyTorch的量化工具包 1.介…

openGauss学习笔记-312 openGauss 数据迁移-MySQL迁移-迁移MySQL数据库至openGauss-概述

文章目录 openGauss学习笔记-312 openGauss 数据迁移-MySQL迁移-迁移MySQL数据库至openGauss-概述312.1 工具部署架构图 openGauss学习笔记-312 openGauss 数据迁移-MySQL迁移-迁移MySQL数据库至openGauss-概述 312.1 工具部署架构图 当前openGauss支持对MySQL迁移服务&#x…

【多任务YOLO】 A-YOLOM: You Only Look at Once for Real-Time and Generic Multi-Task

You Only Look at Once for Real-Time and Generic Multi-Task 论文链接&#xff1a;http://arxiv.org/abs/2310.01641 代码链接&#xff1a;https://github.com/JiayuanWang-JW/YOLOv8-multi-task 一、摘要 高精度、轻量级和实时响应性是实现自动驾驶的三个基本要求。本研究…

多光谱的空间特征和光谱特征Statistics of Real-World Hyperspectral Images

文章目录 Statistics of Real-World Hyperspectral Images1.数据集2.spatial-spectral representation3.Separable Basis Components4.进一步分析5.复现一下5.1.patch的特征和方差和论文近似&#xff0c;5.2 spatial的basis和 spectral的basis 6.coef model7.join model Statis…