IO流学习笔记
Posted Schieber
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(随机访问文件的读取与写入)
-
读取:
raf.read(byte[] data)
字节方式读取 -
写入:
raf.write(btye[] data)
写入内容的字节数组
三. 文件字节流(☆)
-
FileInputStream
(文件字节输入流):用来读取文件 -
FileOutputStream
(文件字节输出流):用来写入文件
四. 文件字符流(☆)
FileReader
(文件字符输入流):用来读取文件FileWriter
(文件字符输出流):用来写入文件
五. Java 中流的分类(☆)
-
字节流:
-
InputStream
(字节输入流):用来读取文件 -
OutputStream
(字节输出流):用来写入文件
-
-
字符流:
-
Reader
(字符输入流):用来读取文件 -
Writer
(字符输出流):用来写入文件
-
六. 字节流与字符流的区别
-
字符流的底层就是字节流,字符流是对字节流的一种封装
-
字节流可以读取任何文件,字符流只能读取文本
-
使用字符流需要考虑字符编码,字节流不需要
-
字符流可以按字符大小读取,也可以一行一行读取,字节流只能按字节大小读取
七. 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();
课后作业
-
遍历指定目录下的所有文件(只要文件),包含子目录,此方法返回一个 File 列表
-
遍历指定目录下的指定文件(后缀名),包含子目录,此方法返回一个 File 列表
-
删除指定的文件夹,包含子目录
-
使用字节输入输出流复制文件
-
使用字节输入输出流复制文件夹,包含子目录
本文来自博客园,作者:Schieber,转载请注明原文链接:https://www.cnblogs.com/xiqingbo/p/java-19.html
以上是关于IO流学习笔记的主要内容,如果未能解决你的问题,请参考以下文章