[学习笔记]Java流、文件和IO

IO是Input和Output的的缩写,即输入/输出,它是一种流式的数据输入和输出的模型;

Input把外部数据读到内存,Output把内存当中的数据输出到外部;

由于代码在内存中运行,所以代码运行过程中需要的数据也需要读取到内存中,并将数据以某种数据类型表示以方便代码处理;

由于内存的大小有限,要处理的任务多,所以需要在数据处理完成后,将数据输出到某个地方并保存;

一个流可以理解为一个数据序列,输入流表示从一个源读取数据,输出流表示向一个目标写数据;

IO流按顺序读写数据,根据IO流模式,数据进行单向的流动;

java.io包为I/O操作提供强大而灵活的支持,可以对输入和输出进行操作,并且支持多种格式的数据流的处理;

InputStream/OutputStream

InputStream和OutputStream是java.io包提供的读写二进制数据的同步IO功能,IO流的最小单位为字节(byte),也称为字节流;

InputStream代表输入字节流,OutputStream代表输出字节流,它们是最基本的字节流;

FileInputStream

InputStream是java.io包提供的最基本的输入流,它是一个抽象类,是所有输入流的超类;

FileInputStream是InputStream类的子类,它实现了InputStream中定义的方法,用于从文件流中读取数据;

FileOutputStream

对应于FileInputStream,FileOutputStream是OutputStream的子类,用于向文件写入数据;

Reader/Writer

若流读写的最小数据单位为字符(char),则这种流称为字符流;

Java.io提供Reader和Writer可用于进行字符流的读写;

Reader和Writer本质上是能自动编码/解码的InputStream和OutputStream;

同步和异步

同步IO指当进行读写操作时,代码必须等待数据返回后才继续执行后续的代码;

异步IO指当进行读写操作时,发出请求就立刻执行后续代码;

相比于同步IO,异步IO可以提高CPU的执行效率但实现起来比较复杂;

Java提供java.io包来实现同步IO,java.nio包实现异步IO;

文件是计算机系统中重要的存储数据的方式,java.io包提供了File类来实现对文件和目录的操作;

创建File对象

File类既可以用于处理文件,又可以处理用于组织文件的目录,使用时需要先创建一个File对象;

创建File对象时,需要传入文件在系统当中的路径,路径可以是绝对路径,也可以是相对路径;

在Windows操作系统中,使用 \ 作为路径的分隔符,在Linux操作系统中使用的是 / 作为路径的分隔符;

在Java字符串当中,分隔符 \ 需要转义,所以会被写为 \ ;

. 表示当前目录, .. 表示上级目录;

创建File对象本身不涉及IO操作;

读写文件

FileInputStream和FileOutputStream可以用于读写文件,进行文件读写操作前需要先创建一个流对象;

//创建输入流对象用于读取文件

//创建输出流对象用于写数据至文件

序列化

序列化是Java对象转换成二进制数据(byte数组)的过程,序列化之后即可将二进制数据保存到文件中或通过网络传输;

反序列化

与序列化相反,反序列化就是把二进制数据转换为Java对象的过程;

Original: https://www.cnblogs.com/cloudyzcy/p/16303608.html
Author: 糖小豆
Title: [学习笔记]Java流、文件和IO

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713029/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球