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

前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的小伙伴共勉。

1.缓冲流

在学习IO之后,接触到在FIleWriter和FileOutputStream中间接了解到了缓冲区,如果想再之后对文件就行修改,那么就可以flush对对象进行刷新,从而可以对流对象重新编写,今天学的依然是增强流操作,缓冲流也叫高效流,是对四个FileXXX流对增强。

构造方法:

BufferedInputStream,字节缓冲输入流

BufferedOutputStream:字节缓冲输出流

BufferedReader:字符输入流

BufferedWriter:字符输出流

这里的字符输入流和字符输出流有特有对方法一个是readline读取下一行用在BufferedReader一个是newline换行用在Bufferedwriter直接用缓冲流对象调用即可。

2.转换流

字符集:也叫编码表,是一个系统支持对所有字符对集合,包括各个国家对文字,标点符号,图形符号,数字等。。。

关于编码就会由于编码的字符集不对应导致不能更转换,显示乱码。

这里引入InputStreamReader 是Reader对子类

构造方法:

·InputStreamReader有两个构造方以一个是创建默认字符集的字符流,一个是创建指定字符集的字符流;前面是引入的File对象,后面是读取的参数字符集格式。

而OutputStreamWriter是Writer的子类,是字符流到字节流的桥梁,使用指定的字符集将字符编码为字节,他的字符集可以由名称来指定的也可以接受自定义的默认字符集。

构造方法:

·outputStreamWriter也有两个构造方法,和输入流的换转换流一样的道理。

3.序列化流

而对于序列化机制,使用一个字节序列表示一个对象,该字节序列包含对象对数据等等信息,相当于文件中持久保存了一个对象的信息。

ObjectOutputStream类是将 Java对象的原始数据类型写出到文件实现对象的持久存储。

构造方法:

·ObjectOutoutStream创建一个指定的OutputStream的ObjectOutputStream对象。

创建一个FileOutputStream对象传入到ObjectOutputStream中对该对象写入到指定的FileOutputStream对象中。

序列化操作,必须要满足两个条件,一个是实现Serializable接口,是一个标记接口,如果不实现此接口,将不会进行任何序列化和反序列化操作。

第二个要求是必须要能够序列化,如果有不能够序列化操作的必须注明是瞬态的,使用transient关键词修饰。

这里用到的方法是writeObject将指定对象写出。

而如果要读取一个序列化的文件必须要反序列化,就要用到ObjectInputStream。将序列化对象反序列化,那么用到的readObject方法来进行读取对象。

这里我们要找到对象的.class文件来对对象进行反序列化。这里有个捕获不到异常,那么就会在使用try catch中捕获异常如果没有找到对应的.class文件那么就会输出显示没有找到。

另外还有一种反序列化对象,如果能找到.class文件不能对序列化文件进行修改,如果修改也会操作失败,是序列版本号异常。发生这个异常的原因:

该类的序列号相对于六种读取秒数类的版本号不相同、该类包含未知数据类型、该类没有可访问的无参数构造方法。

Serualizable会对给序列化的类提供一个序列化版本号。serialVersionUID目的在于验证序列化的对象和对应类是否版本匹配。可以在定义要序列化的类中加入版本号。

4.打印流

在PrintStream类中有print和println方法。

构造方法就是PrintStream创建一个新的打印流用指定的文件名。然后通过setOut来改变打印流流向。

#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. aliyun TableStore相关操作汇总

    总结:这个东西本身可能技术还不成熟,使用的人少,有问题很验证解决 遇到的问题:(1)没有一个GUI工具,使用门槛高(2)查询的GetRange不方便,把查询出来的数据使用System.out.prin ...

  2. 系列博文-Three.js入门指南(张雯莉)-网格 setInterval方法 requestAnimationFrame方法 使用stat.js记录FPS

    第6章 动画 在本章之前,所有画面都是静止的,本章将介绍如果使用Three.js进行动态画面的渲染.此外,将会介绍一个Three.js作者写的另外一个库,用来观测每秒帧数(FPS). CSS3动画那么 ...

  3. 根据http协议下载文件保存到相应的文件下

    本实例通过提供的http网址来下载文件,并保存到本地指定的文件下. 本例提供的网址为:http://112.53.80.131:8888/database/11.mdb,下载的文件名为:11.mdb ...

  4. 【Canal源码分析】Canal Instance启动和停止

    一.序列图 1.1 启动 1.2 停止 二.源码分析 2.1 启动 这部分代码其实在ServerRunningMonitor的start()方法中.针对不同的destination,启动不同的Cana ...

  5. Django web框架开发基础-django实现留言板功能

    1.创建项目 cmd  django-admin startpoject cloudms 2.创建APP cmd django-admin startapp msgapp 3.修改settings,T ...

  6. Spring 系列之Spring常用注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.实物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...

  7. Django模板修炼

    引言:由于我们在使用Django框架时,不会将HTML代码采用硬编码的方式,因为会有以下缺点: 1:对页面设计进行的任何改变都必须对 Python 代码进行相应的修改. 站点设计的修改往往比底层 Py ...

  8. golang从简单的即时聊天来看架构演变

    前言 俗话说的好,架构从来都不是一蹴而就的,没有什么架构一开始设计就是最终版本,其中需要经过很多步骤的变化,今天我们就从一个最简单的例子来看看,究竟架构这个东西是怎么变的. 我将从一个最简单的聊天室的 ...

  9. SASS 中变量的默认值

    SASS 中定义的变量,后设置的值会覆盖旧的值. $color: red; $color: blue; .btn { color: $color; } 编译后为: .btn { color: blue ...

  10. 开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程

    目录 基本原理 方法1 - 本机Windows下建站 (力荐) 下载安装node.js 用管理员权限打开命令行,安装hexo-cli和hexo 下载安装git 初始化hexo 使用hexo gener ...