我的学习阶段是跟着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学习之路——基础阶段二(第七篇)的更多相关文章

  1. #Java学习之路——基础阶段二(第一篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  2. #Java学习之路——基础阶段二(第九篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  3. #Java学习之路——基础阶段二(第二篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  4. #Java学习之路——基础阶段(第七篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  5. #Java学习之路——基础阶段二(第三篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  6. #Java学习之路——基础阶段二(第十篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  7. #Java学习之路——基础阶段二(第八篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  8. #Java学习之路——基础阶段二(第六篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  9. #Java学习之路——基础阶段二(第五篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

随机推荐

  1. golang map的判断,删除

    http://blog.sina.com.cn/s/blog_9e14446a01018q8p.html map是一种key-value的关系,一般都会使用make来初始化内存,有助于减少后续新增操作 ...

  2. github 用git bash上传项目 最后提示 Everything up-to-date 但没传上去

    今天为了把本地的项目远程到githup远程仓库,把好久不用的githup命令重新用了起来,不用怀疑,很正常的出错了. 为了长点记性,总结错误与解决办法如下: 1.我犯得第一个简单错误,是忘了git c ...

  3. 如何用VBS编写一个简单的恶搞脚本

    windows系统的电脑, 首先右击桌面,选择新建-文本文档,在桌面上新建一个文本文档:     随后打开计算机或者是我的电脑,点击其中的组织(xp系统多为工具),选择下面的文件夹和搜索选项     ...

  4. Postman 使用详解

    转自: http://blog.csdn.net/flowerspring/article/details/52774399 Postman 使用详解 阅读 6754收藏 3022016-6-9 作者 ...

  5. go语言 nsq源码解读四 nsqlookupd源码options.go、context.go和wait_group_wrapper.go

    本节会解读nsqlookupd.go文件中涉及到的其中三个文件:options.go.context.go和wait_group_wrapper.go. options.go 123456789101 ...

  6. .net core使用Ocelot+Identity Server统一网关验证

    源码下载地址:下载 项目结构如下图: 在Identity Server授权中,实现IResourceOwnerPasswordValidator接口: public class IdentityVal ...

  7. BZOJ_3879_SvT_后缀数组+单调栈

    BZOJ_3879_SvT_后缀数组+单调栈 Description (我并不想告诉你题目名字是什么鬼) 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个 ...

  8. BZOJ_1040_[ZJOI2008]骑士_树形DP

    BZOJ_1040_[ZJOI2008]骑士_树形DP 题意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪 ...

  9. ssh 隧道

    SSH 隧道转发实战   大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的需求以及在网上查找的资料配合自己的实际操作 ...

  10. Android性能优化-内存泄漏的8个Case

    1为什么要做性能优化? 手机性能越来越好,不用纠结这些细微的性能? Android每一个应用都是运行的独立的Dalivk虚拟机,根据不同的手机分配的可用内存可能只有(32M.64M等),所谓的4GB. ...