java基础入门之IO流

 更新时间:2021年06月16日 16:49:27   作者:scanner小霸王  
流是一种抽象概念,它代表了数据的无结构化传递。。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出

io学习框架:

在这里插入图片描述

文件:

保存数据的地方。

在这里插入图片描述

1)常见文件对象的相关构造器和方法:

在这里插入图片描述

当进行File file = new File(filePath);只是在内存上有一个文件对象;

只有file.createNewFile();才会在磁盘创建文件

在这里插入图片描述

获取文件的相关信息:

utf8中,一个汉字是三个字节,所以当用字节流的read()方法一个字节一个字节的读取的时候,将会出现乱码的情况

在这里插入图片描述

2)目录的删除和增加:

a)用来删除文件或者文件夹

在这里插入图片描述

b)文件夹的创建:

在这里插入图片描述

Io流的原理:

在这里插入图片描述

流的分类:

字节流适用于声音等文件的传输,因为字节流是一个字节一个字节的读取,可以保证无损;

字符流虽然读取的效率高些,但更适用于文本的读取;

注意:inpuStream,OutputStream,Reader,Writer全是抽象类,创建对象时候要实现他们的子类即可。

在这里插入图片描述

1)InputSream输入流:

在这里插入图片描述

在这里插入图片描述

字节输入流:文件–》程序

a)fileInputStream.read()一个一个字节读取

(注意:输出的时候不能像如图框选的那样输出,因为read()读取的是下一个字符了)

在这里插入图片描述

b)改进,使用fileInputStream.read(buffer)

在这里插入图片描述

2)OutputStream

在这里插入图片描述

注意:如果使用OutputStream写入数据时候,文件不存在将自动进行文件的创建;

以下是写入数据的几种方式,

当使用红框的语句的时候,写入数据会追加在文件中;

否则,将覆盖文件的内容

在这里插入图片描述

完成文件的拷贝:(需要输入流和输出流的综合应用)

在这里插入图片描述

3)FileReader:

在这里插入图片描述

在这里插入图片描述

1)FileReader的使用:

在这里插入图片描述

4) FileWriter:

在这里插入图片描述

使用filewriter后,必须关闭(close)或者刷新(flush),否则写入不到指定文件

在这里插入图片描述

a)FileWriter的使用:

使用filewriter后,必须关闭(close)或者刷新(flush),否则写入不到指定文件

close()相当于flush()+关闭

在这里插入图片描述

节点流和处理流:

1)节点流:直接读取数据源的流

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2)处理流:对节点流进行包装

在这里插入图片描述

例如BufferReader:

readLine()是按行读取:

当返回null时候,表示文件读取完毕;

关闭流的时候,这里只需要关闭BufferReader,因为底层会自动去关闭节点流;

在这里插入图片描述

BufferWriter:

注意:如果需要追加在文件的话,是在节点流进行设置;

newLine()插入一个换行符

在这里插入图片描述

两者的区别与联系:

在这里插入图片描述

BufferReader和BufferWriter实现文件拷贝:

注意:BufferReader和BufferWriter是安装字符操作;

不要操作二进制文件(声音,视频,doc,pdf,等等),可能会造成文件损坏

在这里插入图片描述

处理字节的处理流:

BufferedOutputStream和BufferedInputStream实现拷贝图片:

在这里插入图片描述

当然,除此之外,BufferedOutputStream和BufferedInputStream也可以实现文本的拷贝;

对象处理流:专门处理对象的流,专门把对象保存到文件中,并且能够从文件中恢复;

序列化:就是保存数据的时候,保存数据的值和数据类型;

标记接口:没有任何方法

在这里插入图片描述

1)ObjectInputStream:(也是包装流)

在这里插入图片描述

示例:

在这里插入图片描述

2)ObjectOutputStream:

在这里插入图片描述

示例:

序列化之后,保存的文件格式,不是纯文本,而是按照他的格式来存储

在这里插入图片描述

当反序列化的时候需要用到getName();toString()等方法的时候,序列化也要一并把这些方法存储进行;

在这里插入图片描述

对象流注意事项:

在这里插入图片描述

标准输入和输出:

标准输入,从键盘是获取:Scanner scanner = new Sanner(System.in);

在这里插入图片描述

转换流:

InputStreamReader:字节流转化(包装)为字符流;

在这里插入图片描述

在这里插入图片描述

1)**OutputStreamReader:**字节流转化(包装)为字符流;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

打印流:

(只有输出流,没有输入流)

PrintStream和PrintWriter(可以把信息打印到文件里面)

1)PrintStream

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2)PrintWriter

在这里插入图片描述

PrintWriter可以传入一个输出流,这里System.out是标准输出

在这里插入图片描述

Properties类:

1)传统的处理方法(使用处理流加载配置文件),不方便:

在这里插入图片描述

2)Properties方式:

在这里插入图片描述

在这里插入图片描述

总结

这篇文章就到这里了,希望大家能够喜欢,也希望大家能够多多关注脚本之家其他文章!

相关文章

  • Java中方法使用的深入讲解

    Java中方法使用的深入讲解

    这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • java读取配置文件自定义字段(yml、properties)

    java读取配置文件自定义字段(yml、properties)

    本文主要介绍了java读取配置文件自定义字段(yml、properties),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 详解JAVA Timer和TimerTask

    详解JAVA Timer和TimerTask

    这篇文章主要介绍了JAVA Timer和TimerTask的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Spring Boot 集成接口管理工具 Knife4j

    Spring Boot 集成接口管理工具 Knife4j

    这篇文章主要介绍了Spring Boot 集成接口管理工具 Knife4j,首先通过创建一个 Spring Boot 项目展开主题,需要的小伙伴可以参考一下
    2022-05-05
  • java并发学习之Executor源码解析

    java并发学习之Executor源码解析

    这篇文章主要为大家介绍了java并发学习之Executor源码示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • idea快速生成代码配置的方法示例

    idea快速生成代码配置的方法示例

    本文主要介绍了idea快速生成代码配置的方法示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • SpringBoot集成消息队列的项目实践

    SpringBoot集成消息队列的项目实践

    本文主要介绍了SpringBoot集成消息队列的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • idea多环境配置及问题解决方案

    idea多环境配置及问题解决方案

    这篇文章主要介绍了idea多环境配置及问题解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 基于Jenkins自动打包并部署docker环境的操作过程

    基于Jenkins自动打包并部署docker环境的操作过程

    这篇文章主要介绍了基于Jenkins自动打包并部署docker环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Java实现自定义阻塞队列

    Java实现自定义阻塞队列

    这篇文章主要介绍了Java如何实现自定义阻塞队列,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-10-10

最新评论