IO流学习笔记

Posted Schieber

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流学习笔记相关的知识,希望对你有一定的参考价值。

IO流就是以流的方式进行输入输出

IO 流

Input Output Stream(输入输出流):以流的方式进行输入输出
与文件或数据交互的内容称为 IO 流,在 JDK 中java.io包下

input(输入流):System.in(标准输入流)
output(输出流):System.out(标准输出流)

一. File 类

File 类代表一个文件或文件夹

常用方法 方法描述
createNewFile() 创建新文件
exists() 判断文件是否存在
delete() 删除文件或文件夹,删除文件夹时只能删除空文件夹
mkdir() 创建目录,不包含子目录
mkdirs() 创建目录,包含子目录
listFiles() 获取指定目录的文件与文件夹,返回一个File数组
getName() 获取文件或文件夹的名称
getPath() 获取文件或文件夹的完整路径
isDirectory() 判断是否为一个文件夹
isFile() 判断是否为一个文件
isHidden() 判断是否为一个隐藏文件
length() 获取文件的大小,单位为字节

二. RandomAccessFile(随机访问文件的读取与写入)

  1. 读取:raf.read(byte[] data) 字节方式读取

  2. 写入:raf.write(btye[] data) 写入内容的字节数组

三. 文件字节流(☆)

  1. FileInputStream(文件字节输入流):用来读取文件

  2. FileOutputStream(文件字节输出流):用来写入文件

四. 文件字符流(☆)

  1. FileReader(文件字符输入流):用来读取文件
  2. FileWriter(文件字符输出流):用来写入文件

五. Java 中流的分类(☆)

  • 字节流:

    1. InputStream(字节输入流):用来读取文件

    2. OutputStream(字节输出流):用来写入文件

  • 字符流:

    1. Reader(字符输入流):用来读取文件

    2. Writer(字符输出流):用来写入文件

六. 字节流与字符流的区别

  1. 字符流的底层就是字节流,字符流是对字节流的一种封装

  2. 字节流可以读取任何文件,字符流只能读取文本

  3. 使用字符流需要考虑字符编码,字节流不需要

  4. 字符流可以按字符大小读取,也可以一行一行读取,字节流只能按字节大小读取

七. ObjectInputStream(对象流)

对象流可以把对象存储到硬盘中,也可以从硬盘中读取一个对象,在 Java 中称为序列化与反序列化
序列化对象必须实现java.io.Serializable
分配了内存空间的对象做序列化操作,必须实现java.io.SeriaZable

ObjectInputStream 对象输入流 反序列化 把对象从硬盘中读取到内存中
ObjectOutputStream 对象输出流 序列化 把内存中的对象写入到硬盘中

八. 缓冲流

  • 优点:减少对硬盘的IO读写,提高读写效率
BufferedInputStream 字节缓冲输入流 默认大小8K
BufferedOutputStream 字节缓冲输出流 默认大小8K
BufferedReader 字节缓冲输入流
BufferedWriter 字节缓冲输出流

九. 序列化与反序列化

  • 序列化:将 Java 程序中的有序不重复的对象保存在某种介质中

  • 反序列化:将介质中的有序不重复的对象读入到 Java 程序中

  • 持久化:将 Java 程序中的数据永久的保存在某种介质(电脑磁盘,数据据库)当中

序列化特点:
1. 序列化的对象必须要实现Serializable接口(可序列化)
2. 静态的属性不能够被序列化
3. 若被序列化的对象中含有类属性时,则该属性也必须是可序列化的

十. 克隆

克隆的对象必须要实现Cloneable接口

Sheep p  = new Sheep();
Sheep pp = (Sheep)p.clone();

课后作业

  1. 遍历指定目录下的所有文件(只要文件),包含子目录,此方法返回一个 File 列表

  2. 遍历指定目录下的指定文件(后缀名),包含子目录,此方法返回一个 File 列表

  3. 删除指定的文件夹,包含子目录

  4. 使用字节输入输出流复制文件

  5. 使用字节输入输出流复制文件夹,包含子目录

本文来自博客园,作者:Schieber,转载请注明原文链接:https://www.cnblogs.com/xiqingbo/p/java-19.html

以上是关于IO流学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

IO流学习笔记

Java IO流 学习笔记

Java IO流 学习笔记

JavaSE 学习笔记之IO流(二十二)

java学习笔记 --- IO

Java 学习笔记 - IO篇:常见的流Stream通道Channl以及相互关系