ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-05-25 21:33:34  阅读:160  来源: 互联网

标签:文件 Java IO 笔记 InputStream File new 数据


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有