IO流相关知识(File,字节流,字符流,特殊操作流(标准输入流,标准输出流,对象序列化与反序列化,properties与IO流结合-程序员宅基地

技术标签: 程序员  java  开发语言  

  • 5.字符流读数据的方法

  • 6.字符流复制文件

  • 7.字符缓冲流

  • 8.字节,字符流小结

  • 9.复制文件的异常处理

  • 四、特殊操作流

    • 1.标准输入流
  • 2.标准输出流

  • 3.打印流

  • 4.对象序列化流与对象反序列化流(它是基于字节流上的)

  • 5.解决对象序列化流的三个问题

  • 6.Properties

  • 总结


前言

=================================================================

流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出

一、File

=====================================================================

1.File类的概述和构造方法


在这里插入图片描述

在这里插入图片描述

通过如上的图相信对文件打的相关应用已经有了初步的认识,因为封装的不是真正存在的文件,仅仅是一个路径名而已,所以没有那个路径的文件也可以写,不会报错,将来是把不存在的转换为具体存在的。

2.File类创建功能


在这里插入图片描述

这里需要注意的是:不能根据目录来判断是创建的文件还是目录,而是通过调用的方法来判断的,路径那个只是名字而已,文件和目录的名字也不能是一样的

3.File类判断和获取功能


在这里插入图片描述

4.File类删除功能


在这里插入图片描述

注意:File的相关操作与字节流没有继承的关系,所以要删除文件的话还是的用File的删除功能才可

二、字节流

====================================================================

1.IO流的概述和分类


概述

在这里插入图片描述

分类

在这里插入图片描述

2.字节流写数据


在这里插入图片描述

记得一定要释放资源

3.字节流写数据的两个小问题


字节流写数据如何换行

在这里插入图片描述不同的操作系统的换行是不一样的

字节流写数据如何实现追加写入

在这里插入图片描述

值得注意的是是在文件的后面添加,而原来的数据还是有的,所以在用的时候就要考虑一下是怎样使用自己的文件的

4.字节流写入数据假异常处理


在这里插入图片描述

就是简单的异常处理而已,如果不使用处理的话就抛出就可以了

5.字节流读数据(重点)


一次读一个字节的数据

在这里插入图片描述

标准的代码格式就是这样的

在这里插入图片描述

一次读一个数组的数据

在这里插入图片描述

在这里插入图片描述

字节流读数据其实很简单,这里需要注意的是字节流读数据的话可以有两种方法,至于使用怎样的方法就得取决于自己得使用就行了

6.字节缓冲流


在这里插入图片描述

在这里插入图片描述

7.如何选择怎样得数据读取呢?


在这里插入图片描述

从图中可以看出字节缓冲流得读取比基本得字节读取要快很多,如果要节省时间得话就可以考虑用字节缓冲流来进行字节流得读取

三、字符流

====================================================================

1.为什么会出现字符流?


在这里插入图片描述

所以他的底层操作的实质还是字节流

编码表

在这里插入图片描述

这里需要注意的是用的什么编码就必须用对应的解码,否则就会出现乱码的情况

2.字符串中的编码解码问题


在这里插入图片描述

在这里插入图片描述

3.如何实现解决编译解码的问题


在这里插入图片描述

其实写的时候是写在了缓冲区,并没写在文件里,可以刷新,也可以关闭流它会自动的刷新

代码理解

在这里插入图片描述

4.字符流写数据的方法


在这里插入图片描述

在这里插入图片描述

5.字符流读数据的方法


在这里插入图片描述

在这里插入图片描述

字节流与字符流的读数据的思想是一样的只不过一个是字符,一个是字节而已

6.字符流复制文件


其方法和字节流的方法一样,只是一个是字节一个是字符而已

方法一:一个一个的字符进行的复制

方法二:一个字符数组一个字符数组的复制

准换流

OutputStreamWriter 他又一个子类是:FileWriter

InputStreamReader 它有一个子类是: FileReader

我们在复制文件等相关操作的时候可以用他的子类进行操作,书写更加的简单,但是,在进行编码问题解决的时候还是得用转换流才可以

7.字符缓冲流


在这里插入图片描述

在这里插入图片描述

字符缓冲流的特有功能

在这里插入图片描述

那么可以做什么呢?

我们可以通过其中特有的功能进行文件的复制等

需要注意的是readline只是读的是内容,不读其他的

8.字节,字符流小结


(此时有个使用的问题就是用哪儿文件的读取就写哪儿,写在一起容易出问题,还有就是一定要释放资源)

字节流

在这里插入图片描述

字符流

在这里插入图片描述

关于乱码的问题

个人认为出现乱码是因为如果用的是字节流的话用char来强制转换显示的话就是只有其中的一部分并没有把一个汉字的那个文字表达组如(【-1,23,36】)表达完整,但是如果用new String()来显示的话会表达完整(可能是里面有相应的方法,具体不清楚,知道就行了),如果用的是字符流的话就是用的默认的编码以及你相应要求的编码来表达,所以就不会出现乱码的问题了

9.复制文件的异常处理


在这里插入图片描述

在这里插入图片描述

四、特殊操作流

======================================================================
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。

我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

面试题及解析总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

大厂面试场景

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

知识点总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。

我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

面试题及解析总结

[外链图片转存中…(img-Y50fiRPM-1713387926546)]

大厂面试场景

[外链图片转存中…(img-t17out3R-1713387926547)]

知识点总结

[外链图片转存中…(img-P90r2ESS-1713387926547)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/2401_84415203/article/details/137899325

智能推荐

WebAssembly完全入门——了解wasm的前世今身-程序员宅基地

文章浏览阅读58次。前言接触WebAssembly之后,在google上看了很多资料。感觉对WebAssembly的使用、介绍、意义都说的比较模糊和笼统。感觉看了之后收获没有达到预期,要么是文章中的例子自己去实操不能成功,要么就是不知所云、一脸蒙蔽。本着业务催生技术的态度,这边文章就诞生了。前部分主要是对WebAssembly的背景做一些介绍,WebAssembly是怎么出现的,优势在哪儿。如果想直接开始撸代码试试..._-s use_xx wasm

创建一个conda环境及将其用于复现别人代码的全过程以及遇到的问题_如何创建别人论文的代码依赖项的conda环境-程序员宅基地

文章浏览阅读3k次,点赞12次,收藏59次。用于小白复现别人论文的代码condawin+r,输入cmd进入命令行,输入conda的情况下出现'conda' 不是内部或外部命令,也不是可运行的程序 或批处理文件。如何用conda查看,创建,切换,管理环境1.查看环境2.创建环境3.切换环境4.管理环境5.删除环境6.环境克隆使用我们搭建的环境来复现别人的代码复现别人代码7.如何安装不同位的Pythonanaconda的安装我就不说了,有很多的教程。主要是第一次跑代码时发现,有时候复现别人的代码会出现一会去安装环境,一会儿去安装环境,conda一个很_如何创建别人论文的代码依赖项的conda环境

Stars POJ - 2352 二维偏序问题CDQ分治_树状数组二维偏序-程序员宅基地

文章浏览阅读246次。Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are not higher and ..._树状数组二维偏序

CS229 吴恩达机器学习 习题大作业答案 problem sets 04 PS04(第6题,欢迎指教)强化学习 Reinforcement Learning MDP 马尔可夫决策_cs229 吴恩达机器学习 习题答案-程序员宅基地

文章浏览阅读1.1k次。6. Reinforcement Learning: The inverted pendulum首先写出simulator(作业中已提供,直接复制过来):import matplotlib.pyplot as pltimport matplotlib.patches as patchesfrom math import sin, cos, piclass CartPole: def __init__(self, physics): self.physics = physi_cs229 吴恩达机器学习 习题答案

在FPGA中实施PCI Express桥接解决方案-程序员宅基地

文章浏览阅读378次。关注、星标公众号,精彩内容每日送达来源:网络素材点击上方蓝字关注我们! 使用 FPGA 的优势之一是能够实施经过验证的知识产权,以快速、自信地完成桥接功能。看看一个常见但复杂的接口PCI Express,就可以证明这些好处。 与其前身外围组件互连 (PCI) 一样,PCI Express (PCIe) 正在成为一种无处不在的系统接口。与 PCI 不同,PCIe 采用 SERDES 接..._pcie桥接芯片模块

【Java面试题】unity和java就业前景_java unity 就业-程序员宅基地

文章浏览阅读253次。分布式锁的坑高并发场景下的问题以下问题不是说在并发不高的场景下不容易出现,只是在高并发场景下出现的概率更高些而已。性能问题来自于以下两方面:**①获取锁的时间上。**如果 Redlock 运用在高并发的场景下,存在 N 个 Master 节点,一个一个去请求,耗时会比较长,从而影响性能。这个好解决,通过上面描述不难发现,从多个节点获取锁的操作并不是一个同步操作,可以是异步操作,这样可以多个节点同时获取。即使是并行处理的,还是得预估好获取锁的时间,保证锁的 TTL>获取锁的时间+任务处理时间_java unity 就业

随便推点

评估回归模型的指标:MSE、RMSE、MAE、R2、偏差和方差-程序员宅基地

文章浏览阅读2.6w次,点赞19次,收藏167次。在回归任务(对连续值的预测)中,常见的评估指标(Metric)有:平均绝对误差(Mean Absolute Error,MAE)、均方误差(Mean Square Error,MSE)、均方根误差(Root Mean Square Error,RMSE)和平均绝对百分比误差(Mean Absolute Percentage Error,MAPE),其中用得最为广泛的就是MAE和MSE。下面依次来..._r2分数

TinyBERT论文及代码详细解读-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏10次。General DistillationData Augmentation主要基于BERT预训练模型以及词向量(文中选择的Glove词向量)进行词级别的替换,实现数据增强。在官方代码中进行了17(NαN_\alphaNα​)倍的增强,以GLUE/QQP数据集为例效果如下:id qid1 qid2 question1 question2 is_duplicate402555 536040 536041 how do i control my 40-something emotions _tinybert

基于贝塞尔曲线的变道轨迹规划_贝塞尔曲线 自动紧急换道-程序员宅基地

文章浏览阅读9k次,点赞14次,收藏118次。基于贝塞尔曲线的变道轨迹规划车辆的换道与超车是驾驶员常见的驾驶操作之一,无人驾驶车辆在行驶过程中也会频繁的面临此工况,车辆行驶过程中必须根据行驶环境中车车之间的相对速度与距离,以及车辆周边其他环境的变化信息,相应做出调整进而完成驾驶要求。在这个过程中,车辆必须对安全换道和超车的通过性做出准确评估,从而使车辆安全的运行。因此,无人车的轨迹规划是保证车辆安全行驶的重要组成部分。..._贝塞尔曲线 自动紧急换道

fedora14 15 16 apache mysql php yum安装_fedora 15如何安装zlib-程序员宅基地

文章浏览阅读714次。fedora14 15 16 apache mysql php yum安装2010年06月26日 星期六 10:14LAMP是Linux, Apache, MySQL, PHP的缩写.这篇教程将教你如何在一台Fedora 服务器上安装Apache2web服务器+PHP(mod_php) +MySQL .我已经测试无误,你可以放心使用。1. 前言_fedora 15如何安装zlib

推荐10个AI人工智能技术网站_ai网站-程序员宅基地

文章浏览阅读1.4w次。AI World的主题包括AI技术、AI应用、AI实践和AI商业。AI Trends (https://www.aitrends.com/) 是一个专注于人工智能领域的网站,它提供了最新的AI技术和应用趋势的报道和分析。AI News(https://www.ainewsletter.com/)是一家专注于人工智能领域的新闻平台,它提供了最新的人工智能技术和应用方面的新闻报道、分析和评论。这些作者和专家对于人工智能技术的发展和应用有着深入的了解和研究,他们的文章和分析通常能够提供非常有价值的洞察和思考。_ai网站

探索Windows驱动程序开发:一个实践导向的学习资源-程序员宅基地

文章浏览阅读806次,点赞21次,收藏20次。探索Windows驱动程序开发:一个实践导向的学习资源项目地址:https://gitcode.com/nmgwddj/learn-windows-drivers在软件世界中,编写操作系统级别的驱动程序是一项高级且复杂的任务,但对于想要深入底层系统工作的开发者来说,这是一个至关重要的领域。Learn-Windows-Drivers 是一个专为学习和理解Windows驱动程序开发而设计的开源项目...