编程语言
首页 > 编程语言> > [学习笔记] Java流、文件和IO

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

作者:互联网

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 f=new File([file_path])

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

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

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

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

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

 

读写文件

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

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

InputStream f = new FileInputStream([filepath]);

或

File f = new File([filepath]);

InputStream in = new FileInputStream(f);

 

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

OutputStream f = new FileOutputStream([filepath]);

或

File f = new File([filepath]);

OutputStream in = new FileOutputStream(f);

 

序列化

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

 

反序列化

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

 

标签:文件,Java,IO,笔记,InputStream,File,new,数据
来源: https://www.cnblogs.com/cloudyzcy/p/16303608.html