我的学习阶段是跟着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. MySQL(二)MySQL的安装和简单使用

    1.MySQL产品的介绍 MySQL数据库属于MySQL AB公司,总部位于瑞典,后被Oracle收购. 优点: (1)成本低:开放源代码,可以免费使用 (2)性能高:执行很快 (2)简单:很容易安装 ...

  2. JavaWeb(四)Servlet-1

    1.Servlet 简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中.Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet ...

  3. Java Script中常见操作

    字符串常见操作:obj.length 长度obj.trim() 移除空白obj.trimLeft()obj.trimRight)obj.charAt(n) 返回字符串中的第n个字符obj.concat ...

  4. 如何在苹果笔记本上装win7系统

    有一哥们,他说他boss给他配了台苹果,可是很不习惯,让我给装一个win系统.以下是我从百度借鉴的: 步骤一 先使用Boot Camp 分割磁盘   1 在Finder工具条中点选"前往&q ...

  5. document_index_data.go

    package types type DocumentIndexData struct {     // 文档全文(必须是UTF-8格式),用于生成待索引的关键词     Content string ...

  6. Pc与移动端的测试异同性

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...

  7. esxi存储(外部共享存储)

    vSphere 基础物理架构中存储是一个非常关键的部分,没有好的存储,虚拟化也就没有存在的价值,并且它能够决定其系统性能的高低和如vMotion等高级功能能否实现.所以本次重点介绍vSphere中的存 ...

  8. 带你由浅入深探索webpack4(二)

    在前一篇文章已经介绍了webpack4从入门到一些核心常用的用法,大家可以从上一篇文章看起.带你由浅入深探索webpack4(一) 接着上一章,接下来我们会继续探讨webpack4中的各种实用用法,让 ...

  9. Java 12 正式发布,8大新特性

    自 2 月 7 日开始,Java/JDK 12 就进入了 RC 阶段.按照发布周期,美国当地时间 3 月 19 日,也就是北京时间 20 号 Java 12 正式发布了! 1.Shenandoah:低 ...

  10. 初探机器学习之使用百度EasyDL定制化模型

    一.Why 定制化模型 一般来说,各大云服务厂商只会提供一些最常见通用的AI服务,针对具体场景的AI应用则需要在云服务厂商提供的服务之上进行定制.例如,通常的图像识别只能做到分析照片的主题内容,而我的 ...