我的学习阶段是跟着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. http请求 405错误 方法不被允许 (Method not allowed)

    由于自己疏忽,导致请求错误405,然后前端数据传输没错,百度大都说跟post提交方式有关,改成get还是报错,检查才知道,controller中忘记写@requestMapping("/XX ...

  2. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  3. mvn -DskipTests和-Dmaven.test.skip=true区别

    在使用mvn package进行编译.打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳过测试,会使用参数-DskipTests和-Dmaven.test.skip= ...

  4. 你不知道的JavaScript--Item21 漂移的this

    而在 JavaScript 中,this 是动态绑定,或称为运行期绑定的,这就导致 JavaScript 中的 this 关键字有能力具备多重含义,带来灵活性的同时,也为初学者带来不少困惑.本文仅就这 ...

  5. iOS推送:Java服务器端发送表情(绘文字)

    http://blog.csdn.net/musou_ldns/article/details/8692520 功能的时候,客户要求能够给iphone发送表情图标,也就是绘文字. 手机环境:iOS5. ...

  6. java 泛型详解(普通泛型、 通配符、 泛型接口,泛型数组,泛型方法,泛型嵌套)

    JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能-----Java的泛型.  1.Java泛型  其实Java ...

  7. 15.app后端怎么设计用户登录方案

    在很多app中,都需要用户的登录操作.登录,就需要用到用户名和密码.为了安全起见,暴露明文密码的次数越少越好.怎么能最大程度避免泄露用户的密码呢?在登录后,app后端怎么去验证和维持用户的登录状态呢? ...

  8. Java 读书笔记 (十五) Java 异常处理

    捕获异常 使用try 和catch关键字可以捕获异常.try/catch 代码块放在异常可能发生的地方. try/catch 代码块中的代码称为保护代码 ,使用try/catch的语法如下: try ...

  9. JAVA经典算法40题(原题+分析)之分析

    JAVA经典算法40题(下) [程序1]   有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   1.程序分析:  ...

  10. 不使用SpringBoot如何将原生Feign集成到Spring中来简化http调用

    在微服务架构中,如果使用得是SpringCloud,那么只需要集成SpringFeign就可以了,SpringFeign可以很友好的帮我们进行服务请求,对象解析等工作. 然而SpingCloud是依赖 ...