#Java学习之路——基础阶段二(第七篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容。
前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的小伙伴共勉。
1.IO流
这里的IO是也就像Input 和 Output 的简称,也可以比作文件的读写操作是内存和硬盘之间的交互了。
这里要学的是字符流和字节流的输入和输出以及相关的优化操作和具体的细节操作。需要注意的是创建流对象在使用之后一定要关闭对象的使用,为避免不必要的资源浪费。
2.字节流
一切文件数据皆为字节流,也就是说我们所用到的很多文件等等都是以二进制的形式存在的,所以在操作的过程中要记的无论是什么文件底层都是以二进制数据。
·OutputStream 这里是字节输出流,也是相当于将指定的字节信息写入到文件中去。
常用的方法:
·close 在使用流之后要释放资源这里是很重要的
·flush 刷新此输出流并强制任何缓冲的输出字节被输出
·write 写入方法 可以传入的参数可以是字节,可以是字节数组,也可以是指定的字节输出流
构造字节流对象的方法:
·通过File创建文件输出流以写入有指定File表示的文件
·通过创建文件输出流以指定名称写入文件
这里的write方法写入字符串时要使用getbytes方法将字符串转为字节数组写入
但是在每次写入数据时程序运行都会清空文件中的内容,
这里就要用到FileOutputStream的构造方法来创建流,这里的传参第一参数和上文一致,但是第二个传参是布尔值,将值写为true表示追加数据,改为false表示清空数据重写。
在Windows中的换行是\r\n 用来加以换行否则直接紧跟之前存入的字节文件。\r return回车 \n newLine 换行,不同的操作系统换行不同。
·InputStream 这里是字节输入流,也是相当于将指定文件的内容读取出来。
常用的方法:
·close 关闭流的方法以释放资源
·read 传入的参数不同方法不同,当传入空参时,是从输入流读取到下一个字节,传入的是byte数组时,是将输入流的部分传入到数组中读取。
这里也要用到文件入流FileInputStream来进行读取操作
构造方法:
·通过打开与实际文件的连接创建一个FileinputStream流,然后通过文件系统的File对象 file命名;
·通过打开与实际文件的连接创建一个FileinputStream流,然后通过文件系统的路径名直接命名。
流的关闭规则:先开后关,后开先关。
3.字符流
当使用字节流的时候会遇到一个问题就是当遇到中文字符的时候,可能会显示不完整的字符,因为占用的字节空间不一样,这样就需要使用字符流来弥补这一个问题。
·Reader字符输入流
常用的方法:
·close 关闭字符流,在使用流之后为了避免不必要的浪费,所以一定要关闭
·read 传入的参数不同功能也不同,和字节流大同小异也是一个单字符,一个字符数组。
FileReader是Reader抽象方法的子类
构造方法:
·FileReader 创建一个新的FileReader 给定要读取的对象
·FileReader 创建一个新的FileReader 给定要读取文件的名称
当创建一个流对象时必须要创建一个文件路径。
这里和字节输入流一样在读取文件对象时遇到-1则读到了文件末尾。这样循环读取每个字符,一般用 while表示当判断的数组值为-1时结束循环。
这里用到了String类中的方法,读取String内的长度的个数,可以避免数组最后读取的字符个数小于定义的数组长度,避免出现-1位重复读取的问题。
·Writer字符输出流
常用的方法:
·write 这里可以写入单个字符,字符数组,部分字符串的长度,写入字符串,写入部分字符串长度
·flush 强制刷新流的缓冲
·colse 关闭流
FileWriter是writer抽象方法的子类
构造方法和创建输入流的方法如出一辙,为了减少时间的浪费,大家可以类比一下。
特别注意的是在写入的过程中由于我们未使用close方法,数据只是被保存到了缓冲区,为了能够进行保存并再之后再次写入,需要使用flush方法来刷新缓冲区,这样流对象就可以继续使用,如果不使用的话就要用到close关闭流释放资源。
需要注意的是字符流只能作用于文本文件,不能作用于图片等其他非文本文件。
·我在学习和在上面描述的过程中发现了一个问题就是 IO流写入的子类 参数传入true和flush功能有什么区别。
这里的续写是两个概念,第一个传入true续写是在同一个流对象操作过程中,对文件的续写,
而flush刷新功能是在关闭流之后再次访问文件去续写之前的内容,就是一个文档没有创建,提前进行了补充,一个是文档已经创建,为了更好的完善内容对文档进行的补充。
4.IO异常处理
对于异常抛出我一直没有提到过,为了方便入门可能就是光了解了流对象,又是仅仅是单纯的抛出throw操作,但是在实际开发中需要用到try...catch...finally进行具体的操作,这样创建流对象的操作就要放到try后面的括号中,而花括号的内容,则是正常的操作,在finally中进行流对象的关闭操作。这是JDk7之后的版本操作。
但是在JDk7之前的流操作需要在try 的花括号中进行流对象的创建还有文件的操作,在最后finally中需要对流对象是否为空进行判断来确定是否关闭流对象。
5.属性集
在Hashtable中 Properties继承了它的属性集,来表示一个持久的属性集,它使用键值结构的方式存储数据结构,每个键及其对应的值都是对应的字符串。
构造方法是一个空的属性列表用来创建一个空的属性列表。
基本的存储方法是:
·setProoerty 设置一对属性
·getProoerty 使用此属性列表的属性 传入的是key值
·StringPropertyNames 获取所有键的名称集合
而如果与流相关的集合为了家在文本中的信息到属性集需要用属性集对象调用load方法加载文本信息到属性集中,然后在进行遍历集合打印。
#Java学习之路——基础阶段二(第七篇)的更多相关文章
- #Java学习之路——基础阶段二(第一篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第九篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第二篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段(第七篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第三篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第十篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第八篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第六篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第五篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
随机推荐
- 监听Web容器启动与关闭
在Servlet API 中有一个 ServletContextListener 接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期. 要监听web ...
- 18.app后端如何实现LBS
移动互联网,除了一直在线这个特点外,还有一个重要特点,能定位到手机的位置.查找附近的人,附近的餐馆等服务,以及大量的o2o应用, 都需要使用LBS(Location Based Services).那 ...
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38140505 自从Gallery被谷歌废弃以后,Google推荐使用ViewPa ...
- 【BZOJ 2713】[Violet 2]愚蠢的副官&&【BZOJ1183】[Croatian2008]Umnozak——【数位DP】
题目链接: 2713传送门 1183传送! 题解: 由于看不懂英文题解(十个单词十一个不认识……),所以只能自己想QAQ. 其实乱搞就好= =. 首先我们发现,各位数字乘积要在1e9以下才可能有用,这 ...
- vue不是内部或外部命令解决验证方案
一.前提 1.该教程是在你已经安装配置好node.js和express情况下 2.你已经完成了vue和vue-cli的全局安装 3.完成以上2步后,使用vue指令,会显示"vue不是内部或外 ...
- 大数据小视角2:ORCFile与Parquet,开源圈背后的生意
上一篇文章聊了聊基于PAX的混合存储结构的RCFile,其实这里笔者还了解一些八卦,RCfile的主力团队都是来自中科院的童鞋在Facebook完成的,算是一个由华人主导的编码项目.但是RCfile仍 ...
- 查询APP Store已发布过的版本记录
1.国内APP使用 酷传 搜索,即可查询到版本记录 2.国外的APP 无法通过国内软件进行搜索,可在App store中直接查询.步骤如下:
- 【工具篇】接口测试神器 -- Postman 入门教程
一.Postman概述 (1)工具介绍 Postman是一个接口测试工具,一款非常流行的API调试工具.在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求 ...
- Spark学习之Spark SQL
一.简介 Spark SQL 提供了以下三大功能. (1) Spark SQL 可以从各种结构化数据源(例如 JSON.Hive.Parquet 等)中读取数据. (2) Spark SQL 不仅支持 ...
- [翻译 EF Core in Action 1.7] MyFirstEfCoreApp访问的数据库
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...