java-流的使用完结与异常处理机制(详解)

 更新时间:2017年09月01日 09:36:54   作者:Einsam  
下面小编就为大家带来一篇java-流的使用完结与异常处理机制(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

1.1 java.io.objectInputStream 对象输入流:用于将一组字节(通过对象输出流写出对象而转换的一组字节)读取并转换为对应的对象。对象输出流将对象写出时转换为一组字节的过程,称为:对象序列化对象输入流将这组字节读取并还原会对象的过程,称为:对象反序列化

1.2 java.io.Serializable Serializable序列化接口

当一个类实现了Serializable接口后,应当在当前类中添加一个常量: 序列化版本号serialVersionUID

序列化版本号若不指定,那么编译器会在编译后的class文件中默认添加一个,而值则是根据当前类结构生成,但这有一个问题,若当前类的结构发生了变化,那么版本号会发生变化,所以建议自行制定版本号 版本号影响对象反序列化的结果:当对象输入流读取一个对象并尝试进行反序列化时会检测该对象的版本号与其所属类现有版本号是否一致,一致则反序列化成功,不一致则反序列化失败版本号一致的情况下,若待反序列化的对象与当前类现有结构不一致是,则采取兼容模式,即:该对象的属相现有类依然有的则还原,没有的则被忽略。

transient--关键字:该关键字用来修饰属性,那么当该对象进行序列化时,这个属性的值会被忽略,从而达到对象“瘦身”的效果

1.3 java.io.FileOutputStream;Java根据流读写数据的单位划分为:字节流,字符流 字节流以字节为单位读写数据字符流以字符(unicode)为单位读写数据,但是底层本质上还是读写字节,只是字节与字符的转换工作有字符流完成Weiter与Reader是所有字符流的父类,他们是一对抽象类,规定了所有字符流都要具备的读写字符方法。转换流OutoutStreamWriter与InputStreamReader是字符流的一对常见实现类

OutputStreamWriter的构造方法支持第二个参数,可以指定字符集,这样通过该流写出的字符都会按照指定的字符集转换,若不指定第二个参数则安装系统默认字符集转换

1.4 java.io.PrintWriter;缓冲字符流:缓冲字符流内置缓冲区,可以提高读写字符效率,并且缓冲字符流的特点可以按行读写字符串。

java.io.BufferedWriter

java.io.BufferefReader

java.io.printWriter是常用的缓冲字符输出流,并且还提供了支佛那个行刷新功能,由于创建PrintWriter时其内部总是嵌套BufferedWriter所以实际的缓冲操作是由BufferefWriter实现

printWriter(pw)支持直接对文件操作的构造方法

printwriter(String path,String snc)

printwriter(File file,String snc)

csn:charset name 字符集名称

PrintWriter在流链接中的构造方法:

PrintWriter(OutputStream out)

PrintWriter(Writer out)

使用上诉构造方法是,有一个对应的重载构造方法要求传入第二个参数,该参数为boolean值若该值为true,则pw具有自动行刷新功能,即:每当使用PW。println()写出内容后都会自动进行

flush操作

PrintWriter(OutputStream out,boolean autoflush)

PrintWriter(Writer out,boolean autoflush)

1.5 java.io.BufferedReader;缓冲字节输入流 可以按行读取字符串

BufferedReader提供方法:

String readLine()连续读取若干字符,知道读取了换行符为止,将之前的所有字符以一个字符串形式返回。注意,返回的字符串中是不包含最后的换行的,若返回为null,则表示末尾.

2.1 异常捕获机制中的try-catch

catch可以定义多个,针对try代码块中可能出现的异常有不同的处理方式时,需要单独捕获这些异常并编写解决手段代码但是应当养成一个习惯,就是在最后捕获一个Exceotion,这样会避免因抛出一个未捕获的异常导致程序出现中断的情况,当捕获的异常之间存在继承关系时,需要将子类异常定义在上面捕获,后定义父类型异常。

异常捕获机制中的finally;finally块只能定义在异常捕获机制的最后,即:try之后或者一个catch之后。finally块可以保证无论try语句块中的代码是否抛出异常,finally块中的代码都必将执行。所以通常会将无关异常都要执行的代码放入finally块中确保执行,比如IO操作中的关闭流操作。

注意:finalize;当一个对象即将被GC释放前,GC会调用该对象的finalize方法,调用后该对象即被释放。finalize方法是Object定义的方法

我是初学者,如有更新不好的,欢迎这位大神指出,谢谢大家!

以上这篇java-流的使用完结与异常处理机制(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java通过What、Why、How了解弱引用

    Java通过What、Why、How了解弱引用

    这篇文章主要介绍了Java通过What、Why、How了解弱引用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 详解一个简单的Servlet容器的设计与实现

    详解一个简单的Servlet容器的设计与实现

    Servlet算是Java Web开发请求链路调用栈中底层的一个技术,而了解一个Servlet容器的实现有助于更好的理解JavaWeb开发,所以下面就来看看如何设计与实现一个简单的Servlet容器吧
    2023-07-07
  • 一文了解Java中枚举的使用

    一文了解Java中枚举的使用

    Java中枚举,大家在项目中经常使用吧,主要用来定义一些固定值。那你了解枚举的本质吗?了解枚举的一些常见用法吗?本文就来为大家一一进行详解
    2022-09-09
  • Intellij IDEA实现SpringBoot项目多端口启动的两种方法

    Intellij IDEA实现SpringBoot项目多端口启动的两种方法

    有时候使用springboot项目时遇到这样一种情况,用一个项目需要复制很多遍进行测试,除了端口号不同以外,没有任何不同。遇到这种情况怎么办呢?这时候可以使用Intellij IDEA解决
    2018-06-06
  • Hibernate分页的两种实现方法

    Hibernate分页的两种实现方法

    这篇文章主要介绍了Hibernate分页的两种实现方法,结合实例形式讲述了criteria分页与hql分页的实现方法,需要的朋友可以参考下
    2016-03-03
  • java实现简单聊天室单人版

    java实现简单聊天室单人版

    这篇文章主要为大家详细介绍了java实现简单聊天室的单人版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Spring Cloud Alibaba微服务组件Sentinel实现熔断限流

    Spring Cloud Alibaba微服务组件Sentinel实现熔断限流

    这篇文章主要为大家介绍了Spring Cloud Alibaba微服务组件Sentinel实现熔断限流过程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • APT 注解处理器实现 Lombok 常用注解功能详解

    APT 注解处理器实现 Lombok 常用注解功能详解

    这篇文章主要为大家介绍了使用APT 注解处理器实现 Lombok 常用注解功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • java gui详解贪吃蛇小游戏实现流程

    java gui详解贪吃蛇小游戏实现流程

    刚开始学JAVA GUI,就练手写了一个小时候经常在诺基亚上玩的一个小游戏__贪吃蛇.做的比较简单,但还是可以玩的.感兴趣的朋友快来看看吧
    2021-11-11
  • Java定位问题线程解析

    Java定位问题线程解析

    这篇文章主要介绍了Java定位问题线程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论