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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【全开源】旅游门票预订系统(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统,提供前后台无加密源码,支持私有化部署。 ​便捷你的每一次出行🌍 🌟 轻松预订…

Postman安装、汉化及禁止自动更新

🎈🎈🎈这里以9.12.2版本为例,因为汉化包最新的版本为9.12.2 下载安装包 历史版本下载: 请把下面链接的"版本号"替换为指定的版本号,例如:8.8.0 系统历史版本Windows64位https://dl…

【C++奇妙冒险】日期类Date的实现

文章目录 前言日期类Date的接口设计构造函数和打印函数获取日期并判断日期是否合法日期类的大小比较关系<运算符重载 判断小于运算符重载 判断相等<运算符重载 判断小于等于>运算符重载 判断大于> 运算符重载 判断大于等于! 运算符重载 不等于 日期类计算日期天数日…

Day07-Web案例

SELECT * FROM EMP OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY; SELECT COUNT(*) FROM EMP;

树莓派串口无法使用(排除硬件错误后)

1、串口 进入/boot文件夹下&#xff0c;打开cmdline.txt文件 cd /boot/sudo vi cmdline.txt 删除下方红框内字段

Docker 部署 mysql 服务

linux用法 Container&#xff08;容器&#xff09;集合成 Services&#xff08;服务&#xff09; 交互集合成 Stack&#xff08;堆栈&#xff09;卸载可能存在的旧版本 sudo apt-get update使apt可以通过HTTPS使用存储库&#xff08;repository&#xff09; sudo apt-get ins…

毕业论文写作新策略:如何有效利用AI写作?

写作这件事一直让我们从小学时期就开始头痛&#xff0c;初高中时期800字的作文让我们焦头烂额&#xff0c;一篇作文里用尽了口水话&#xff0c;拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业&#xff0c;结果毕业前的最后一道坎拦住我们的是毕业论文&#xff0c;这玩意不…

现货白银的交易时间有多连贯?

国际市场上的现货白银优势很多&#xff0c;它除了具备国内同类型品种所不具备的数十倍资金杠杆外&#xff0c;也基本上实现了全天24小时不间断的交易时间&#xff0c;所以投资者可以在全天候连贯的行情中&#xff0c;寻找属于自己的交易获利机会。 但对于内地的投资者来说&…

基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用

背景 随着互联网服务的广泛普及与技术应用的深入发展&#xff0c;日志数据作为记录系统活动、用户行为和业务操作的宝贵资源&#xff0c;其价值愈发凸显。然而&#xff0c;当前海量日志数据的产生速度已经远远超出了传统数据分析工具的处理能力&#xff0c;这不仅要求我们具备…

如何正确理解事件溯源架构模式?

在微服务架构盛行的当下&#xff0c;DDD&#xff08;领域驱动设计&#xff09;也得到了崭新的发展。同时&#xff0c;随着DDD的不断发展&#xff0c;也诞生了一些新的设计思想和开发模式&#xff0c;今天要介绍的事件溯源是其中具有代表性的一种模式。 事件溯源模式是DDD领域中…

复习kafka

Kafka 介绍 Kafka 是一种分布式的&#xff0c;基于发布/订阅的消息系统。它最初由 LinkedIn 开发&#xff0c;并于 2011 年开源。Kafka 的设计目标是提供一种高效、可靠的消息传输机制&#xff0c;能够处理大量的实时数据。 Kafka 基本概念 Producer&#xff1a;生产者&#xf…

告别复制粘贴:AI辅助毕业论文写作全攻略

写作这件事一直让我们从小学时期就开始头痛&#xff0c;初高中时期800字的作文让我们焦头烂额&#xff0c;一篇作文里用尽了口水话&#xff0c;拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业&#xff0c;结果毕业前的最后一道坎拦住我们的是毕业论文&#xff0c;这玩意不…

vue配置代理服务器解决跨域方法

一.vue配置代理服务器解决跨域方法一 过程如图&#xff1a; 1.在配置文件中设置代理服务器的地址 //vue.config.js module.exports{pages:{index:{// 入口entry:src/main.js,},},lintOnSave:false, //关闭语法检测// 开启代理服务器devServer:{proxy:http://localhost:8000//…

cruscal算法经典题目讲解——Leetcode道路建设

道路建设 (nowcoder.com) kruscal例题&#xff1a; 由题目可得&#xff0c;给出n个点求出n个点的最小生成树&#xff0c;权值计算规则为两点间的曼哈顿距离 我们采用cruscal算法实现。首先我们要先构建路线edge&#xff0c;我们建立一个结构体edge表示路线&#xff0c;包含成…

Ubuntu Todesk远程连接一直卡在100%

关于Todesk远程Linux卡在连接服务器的解决方案 在网上看到很多篇文章都说改硬解码什么的 反正我试过是没用 下面是我的解决方案 编辑下面的文件 sudo vim /etc/gdm3/custom.conf 这里如果大家不会使用 vim 退出 1. 按一下ESC键 2. 同时按住shfit: 3. 输入wq 4. 回车重启系…

【Unity Shader入门精要 第12章】屏幕后处理效果(三)

1. Bloom效果 Bloom描述的是图像中较亮的部分向周围一定范围内发生扩散&#xff0c;造成一种朦胧的效果&#xff0c;常用于表现游戏中的灯光或隧道出口之类的效果。 下面的例子将实现一个简单的Bloom效果&#xff0c;其原理是&#xff1a; 将原始图像中较亮&#xff08;灰度…

Word2021中的The Mathtype DLL cannot be found问题解决(office 16+mathtype7+非初次安装)

问题描述&#xff0c;我的问题发生在word中无法使用自定义功能区中的mathtype 我的环境是&#xff1a;W11Word2021mathtype7 因为我是第二次安装mathtype7&#xff0c;所以我怀疑是因为没有卸载干净&#xff0c;于是我参考了下面这篇文章的做法 参考文章 1.首先重新卸载当前的…

IO流---字节流.Java

一&#xff0c;概述 IO流是存储和读取数据的解决方案。 I&#xff1a;input O:output流&#xff1a;像水流一样传输数据 因为IO流与File是息息相关的&#xff0c;所以在学习IO流之前&#xff0c;简单回顾一下File&#xff1a;&#x1f604;&#x1f60a;&#…

数据结构--数组(详细分析)

目录 &#x1f349;引言 &#x1f349;数组 &#x1f348;数组的特性 &#x1f348;数组的优缺点 &#x1f34d;优点&#xff1a; &#x1f34d;缺点&#xff1a; &#x1f348;数组的声明与初始化 &#x1f348;数组的常见操作 &#x1f34d; 插入操作 &#x1f34d;…

QTP——功能测试

一、前言&#xff08;课设目的及内容&#xff09; QTP是quicktest Professional的简称&#xff0c;是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试&#xff0c;主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试&…