JavaEE IO流(1)

1.什么是IO流

(1)input输入

         Output输出

        这两个的首字母就是IO的组成

(2)比如你的电脑可以通过网络上传文件和下载文件

       这个上传文件就是Output

       这个下载翁建就是input

(3)这个输入和输出的标准是以CPU为参照物为基准的

其中通过控制台来将数据传入到CPU中也是Input输入的过程。

图解

2.什么是文件 

(1)在我们的电脑上面定义的文件是一个抽像的概念。

        在我们的电脑上面有两种资源我们将硬件资源和软件资源统称为文件

(2)在我们的接下来的讲解中,我们讲解的文件指的是硬件资源

(3)其中我们要注意的就是我们电脑上面的资源管理器其实也是一格资源,它的名字是目录资源,他是将电脑硬件上面的资源来进行记录的。目录资源其实是一格树状的结构、

3.路径

3.1相对路径

相对路径是的起点可以是任意的路径,可以是以现在工作的路径往下面进行遍历的路径

3.2绝对路径

相对路径就是以此电脑为出发点来进行二叉树的遍历的路径

3.3路径的表示

所以在日常的开发中我建议大家使用/

如果想用\的话可以用转义字符来进行转义

 3.4用路径找到文件

4.文本文件和二进制文件

 (1)文本文件存储的数据要求必须是合法的字符

(2)二进制文件存储的数据可以是任意数据

(3)判断一个文件是二进制文件还是不是二进制文件可以用文档来打开,然后这个文档如果显示的是乱码的话那么这个就是一格二进制文件如果反之就是文本文件。

(4)下图总的就是一格二进制的文本文件

5.针对文件进行操作

(1)在大部分的文件操作有很多种简称(CRUD)

(2)也就是对文件进行

文件的创建,删除文件,创建目录,重命名文件

(4)在java中提供了File包来对文件进行操作(java.io)包中存着所有的java关于输入和输出的操作。

(5)

5.1用file类实现对文件目录的操作

以下这些操作就是日常中比较常用的file对文件进行的操作

(1)上面的这些操作其实都是调用了系统本身的api,这个是由c++编写的JVM来进行调用的,注意不同的操作系统的api的差距是非常大的。

(2)但是要知道的一件事就是JVM也有linux 等等的版本,所以jvm是非常nb的。

(3)****其中要注意的就是基准目录是什么,基准目录可以理解为你当前这个文件工作的目录就是基准目录**************

图示

 (3)其中在多线程的情况下我们可以搭配try ctatch和throw IOException来抛出这个线程的异常

5.2针对临时文件的删除

在我们运行一些文件的时候可能会产生临时的文件,例如我们的word在新建的时候会有两个文档分别是一个临时的,还有一个是主要的文件,临时文件是为了能够记录你电脑在极端情况下断电啥的,然后可以找回

通过这个就可以删除临时文件。

通过这个就可以更好的删除这些文件。

5.3总结加扩展

文件有几种操作分别是

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

上面的这些操作其实就是stream这个操作

举例

 6.针对文件的操作可以将文件分为(字符流)(文件流)

6.1字符流(二进制文件)

(1)inputStream

(2)OutputStream

6.2文件流(文本文件)

(1)read

(2)writer

6.3总结

(1)在后面的学习中我们会使用构造方法打开文件读写文件

(2)通过read和write来读写文件,然后用close来关闭文件

(3)字节!=字符往往多个字节对应多个字符

在java中我们用这个就能够来对字符来进行转换从文字变到字符流

 7.简单总结

(1)要注意的就是字节流以及字符流中的这些input Stream这些方法由于是构造方法所以是不能实例化的。

 8.标注库中对于File使用

(1)我们创建一格File类如果能够读取这个文件的话那么就可以对这个文件进行操作CRUD

 8.1读取操作

读取的操作有三种

8.1.1无参数类型read()

(1)第一种是无参数进行文件的读取,然后这个是一个字节一个字节进行读取,读取到的内容后面会进行返回。

(2)注意返回值应该是byte类型,因为byte的最大的返回值其实就是1字节,但是要注意的就是最后返回的其实是int类型

(3)其实最后的返回值是int类型,因为byte是只能表示正数,然后读取不到-1,但是int可以读取到,然后-1再字符集中表示的是结束的意思

8.1.带一个参数的版本read(byte)

(1)这个是写一个byte类型的数组然后我们会将数据存入到byte类型的数组中,

(2)这个读取多少取决于这个数组的长度是多少,read方法尽可能多的填满这个byte类型的数组

(3)最后返回值为int类型表示实际读取了多少的字节

代码示例

8.3对比

这两个方法对CPU资源的开销是一样的类似于你攒起来扔垃圾和用一次扔一样

(4)其中我们要注意的就是在实际的开发中我们还有可能用数组来存储读到的不同数据

8.2一些扩展知识

(1)我们平时见到的英文字母其实都是ascii表写出来的。(计算机中的字母和ascii一一对应)

(2)我们平时的图片是由字符串表示出来的。

(3)我们在操作文件的时候在不需要这个文件的时候需要关闭这个文件,也许在平时的过程中我们感知不到这个操作的重要性,但是在工作的过程中服务器是24小时运行的这时候字符表就会被占满,这时候就会发生内存的泄漏

(4)文件描述表,这个表可以进行配置其中每个系统的长度是不一样的。

(5)

 9.运用inputSTream来实现文件流的读取

10.OutputStream的使用 

10.1基础用法(三种)

(1)

其中注意的是在写的方法中如果我们没有选择追加写的方式来打开那么就会将整个文件给清除,所以我们在写的时候要注意这一点

(2)

11知识的扩展

11.1读read

(1)java中的char其实是2个字节但是我们的汉字是3个字节(UTF-8) ,但是在java中我们是使用UTF-8来进行编码的,在这个转码过程中会把3个字节的汉字转成unicade(2个字节)这时候就是两个字节的

(2)在java中内置了UTF-8编码以及ubicade这两种编码

(3)其中在java中的STring类是六个字节他是用byte来存储字符串的
(4)char是用unicade来进行编码的

11.2扩展注意事项 

(1)在使用输入流的时候可以使用scanner来进行扫描辅助,但是在做题的时候我是不建议大家使用这个的

(2)在写算法的代码题的时候是有一套复杂的io(目的是筛选人才)

11.3示例1(查询文件)

(1)扫描指定的目录然后删除这个文件中的内容,然后询问用户是否要进行删除

(2)先给定一个目录和查询词然后在写程序的时候看哪个查询词,把匹配的结果给查询到

(3)在File中有一个类是listFile这个可以把这个文件中包含哪些目录给列举出来

(4)这个查找这个是一个递归的过程

 

11.3示例2(复制文件) 

(1)输入一个路径表示这个是要复制这个文件的路径

(2)再输入一个路径表示的是这个复制了的文件以后要去的文件的路径

(3)判断输入的路径是否是合法的。

(4)判断要复制文件的父目录是否存在

在这里有两个判断方法

get Parent File(File)这个返回的是File

getParent(String)这个是返回的父目录的路径

在这里我们推荐使用File类中提供的方法

(5)如果这个父目录是不存在的那么我们就需要创建一个

(6)其中在创建文件的时候都要判断这个路径是否是合法的。(永远都不要相信用户)

11.4示例3(前两种示例的结合)

(1)将整个文件给读出来然后进行查找

(2)isDirectory() 方法只会检查路径所指向的对象是否是一个目录,而不会检查目录是否存在或其他操作系统权限等问题。如果路径指向的对象不存在,则该方法也会返回 false

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

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

相关文章

Python编程基础1

Python特点: 高级:有高级的数据结构,缩短开发时间与代码量。 面向对象:为数据和逻辑相分离的结构化和过程化编程添加了新的活力。 可升级:提供了基础的开发模板,可以在它上面开发软件,实现代码的…

问答机器人

怎样做自己的问答机器人? 根据我们提供的数据分析出问题的答案,我们并不需要训练自己的模型 微调模型 finetune,将语言模型调成另外的语言模型,更适合不同类型数据,运用finetune方法将模型变化 知识库模型 embedd…

关系型数据库面经(数据库系统概论)

下面是我在面试中被问到的关系型数据库的问题并且我回答得不是很好的题目,写个博客记录一下。 下面用于实现数据存储安全性的SQL语句是? 实现数据存储安全性通常涉及到权限管理和加密等手段。在SQL中,用于控制数据访问权限的语句主要是GRAN…

【最新鸿蒙应用开发】——什么是应用开发模型?Stage模型

在应用程序开发时通常需要使用应用模型来提供必备的组件和运行机制,有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。接下来谈谈鸿蒙应用开发当中的两种模型: Stage模型: HarmonyOS …

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:人工智能消防应用

青鸟消防股份有限公司成立于2001年6月,于2019年8月在深圳证券交易所挂牌上市,成为中国消防报警行业首家登陆A股的企业。公司始终聚焦于消防安全与物联网领域,主营业务为“一站式”消防安全系统产品的研发、生产和销售。公司产品已覆盖了火灾报…

USB - ACK、NAK和STALL的含义

在 USB(通用串行总线)通信中,术语 ACK、NAK 和 STALL 指的是用于控制数据流和错误处理的握手数据包。下面是对每个术语的详细解释: ACK(确认): ACK 数据包由接收方发送给发送方,以表…

【NOIP提高组】方格取数

【NOIP提高组】方格取数 💖The Begin💖点点关注,收藏不迷路💖 设有N*N的方格图,我们将其中的某些方格填入正整数, 而其他的方格中放入0。 某人从图得左上角出发,可以向下走,也可以向…

vue2 bug求助!!!(未解决,大概是浏览器缓存的问题或者是路由的问题)

我的vue2项目出现了一个超级恶心的bug 具体流程: 页面a点击a标签->到页面b->页面b用户退出刷新页面->点击浏览器的返回按钮返回上一页 返回页面后页面没有刷新导致用户名还显示这 项目中没有用keep-alive缓存 也在设置了key 尝试了window.addEventListe…

idea实用快捷键(持续更新...)

文章目录 1、快速输入try/catch/finally2、选中多个光标3、实现接口4、方法参数提示5、查看某个类的子类6、弹出显示查找内容的搜索框 1、快速输入try/catch/finally CtrlAltT 2、选中多个光标 ShiftAlt单机多选 End可以全部到行尾,Home则可以全部回到行首 3、实现接…

存储过程定义及优势

存储过程 是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名字和参数(如果有)来调用并执行它。存储过程可以在SQL Server、Oracle、MySQL等关系型数据库中创建和使用。 存储过程的定义&…

评价一个AI模型“好不好”“有没有发展”,首先就躲不掉“开源”和“闭源”两条发展路径。对于这两条路径,你更看好哪一种呢?

评价一个AI模型的发展潜力和好坏时,确实需要考虑它是走“开源”还是“闭源”的发展路径。两者各有优缺点,具体选择哪一种路径更好,要根据具体情况和目标来决定。 开源路径 优点: 透明性和安全性: 开源代码允许任何人…

Python深度学习基于Tensorflow(14)人脸检测和识别实例

文章目录 人脸检测研究现状传统的人脸检测算法深度学习人脸检测算法 人脸识别实战人脸检测人脸对齐人脸标准化人脸表示人脸验证 参考资料 人脸检测研究现状 这里直接引用了吴伟硕士毕业论文 随着计算能力的飞速提升和创新性的传感、分析、渲染设备和技术的广泛应用&#xff0c…

【TB作品】msp430g2553单片机,流速,流量,检测与显示

功能 采用P1.4作为ADC输入通道,采集流量,显示到oled,并串口发送。 硬件 //OLED // SCL接P2^0 // SDA接P2^1 //vcc接VCC //GND接GND //串口 //P1.1 RXD, P1.2TXD //P1.1接模块的TX P1.2接模块的RX 反着接 //ADC通道 //采用P1.4作为ADC输…

LoRA低秩自适应微调技术原理及实践

大型语言模型的低秩自适应 (LoRA) 用于解决微调大型语言模型 (LLM) 的挑战。GPT 和 Llama 等模型拥有数十亿个参数,通常对于特定任务或领域进行微调的成本过高。LoRA 保留了预训练的模型权重,并在每个模型块中加入了可训练层。这显著减少了需要微调的参数…

k8s学习--ConfigMap详细解释与应用

文章目录 一 什么是configmapConfigMap 的好处ConfigMap 的限制 二.创建ConfigMap的4种方式1.在命令行指定参数创建2.在命令行通过多个文件创建3.在命令行通过文件提供多个键值对创建4.YAML资源清单文件创建 三 configmap的两种使用方法1.通过环境变量的方式传递给pod2.通过vol…

提高LabVIEW程序员分析需求、写代码、测试能力的方法

分析需求 深入了解项目背景:在开始任何项目之前,程序员应该深入了解项目的背景和目标。这包括与客户或项目干系人进行详细讨论,理解他们的期望和需求。参加相关的行业研讨会和阅读技术文档也有助于更好地了解项目背景。 使用需求管理工具&am…

MySQL学习——影响选项文件处理的命令行选项和程序选项修改器

大多数支持选项文件的MySQL程序都处理以下选项。因为这些选项会影响选项文件的处理,所以必须在命令行上给出,而不是在选项文件中给出。为了正常工作,这些选项中的每一个都必须先于其他选项给出,但以下情况除外: -prin…

WLAN组网模型探究

目录 一、WLAN基本概念二、WLAN组网方式三、WLAN转发模型 随着信息技术的飞速发展,无线局域网(WLAN)已逐渐成为企业网络架构中不可或缺的一部分。不同的企业组织因其业务特性、规模大小及安全需求的不同,对WLAN的要求也各有侧重。…

物联网面试准备

volatile的作用 volatile关键字用于告诉编译器,该变量可能会在程序的执行过程中被意外更改,因此编译器不应该对该变量进行优化或者缓存。 这样可以确保每次访问该变量时都会从内存中读取最新的值,而不是使用缓存中的旧值。 在多线程编程中&…

C语言习题~day28

关于文本文件和二进制文件描述错误的是? A.文本文件是可以读懂的,二进制文件没办法直接读懂 B.数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件 C.将内存中的数据转化成ASCII码值的形式,并…