[JAVA · 初级]:20.IO流技术

原理 

[JAVA · 初级]:20.IO流技术_第1张图片

在Java程序中,对于数据的输入/输出操作以“流” (stream) 方式进行;J2SDK提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过标准的方法输入或输出数据。

概念

数据源data source. 提供原始数据的原始媒介。常见的:数据库、文件、其他程序、内存、网络连接、IO设备。

数据源就像水箱,流就像水管中流着的水流,程序就是我们最终的用户。 流是一个抽象、动态的概念,是一连串连续动态的数据集合。

[JAVA · 初级]:20.IO流技术_第2张图片

分类

•    流的方向:

输入流:数据源到程序(InputStream、Reader读进来)

输出流:程序到目的地(OutPutStream、Writer写出去)

•    处理数据单元:

字节流:按照字节读取数据(InputStream、OutputStream) 

字符流:按照字符读取数据(Reader、Writer)

•    功能不同:

节点流:可以直接从数据源或目的地读写数据。

处理流:不直接连接到数据源或目的地,是处理流的流。通过对其他流的处理提高程序的性能。

•    节点流和处理流的关系:

节点流处于io操作的第一线,所有操作必须通过他们进行;处理流可以对其他流 进行处理(提高效率或操作灵活性)。

 

体系

[JAVA · 初级]:20.IO流技术_第3张图片

字节流

•   ByteArrayInutStream和ByteArrayOutputStream

•   数据源或目的地为:字节数组

•   BufferedInputStream和BufferedOutputStream是处理流,通过内部缓存数组来提高操作流的效率。

•   DataInputStream和DataOutputStream提供了可以存取所有Java基础类型数据(如:int,double 等)的方法。

demo

<span style="font-size:18px;"><span style="font-size:18px;">package com.bjsxt.wsl;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class HelloIn {
	public static void main(String[] args) throws IOException {
		//获取文件路径
		InputStream inputStream = new FileInputStream("D:\\hello.txt");
		//一般所使用的方式
		StringBuilder builder = new StringBuilder();
		byte[] bs = new byte[1024];
		int num = 0;
		//开始读取数据
		while ((num = inputStream.read(bs)) != -1) {
			builder.append(new String(bs));
		}
		System.out.println(builder);
	}
</span></span>

字符流

•    Reader:

用于读取字符流的抽象类,数据单位为字符。

•    Writer:

写入字符流的抽象类。

•    BufferReader和BufferWriter

读取文本一般使用这一对!

处理流

对象的序列化和反序列化:

ObjectInputStream和ObjectOutputStream,数据源或目的地是:对象!

打印流:

PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息。

System.out 就是打印流

InputStreamReader和OutputStreamWrite为处理流:用于将字节流转化成字符流。

File类

文件和目录路径名的抽象表示形式。一个File对象可以代表一个文件或目录,但是不是完全对应的。建立File对象不会对文件系统产生影响。

业务思想

IO流技术的使用,使得我们的工作更为顺畅,无论是从物理存储的角度来看待,还是从逻辑思维中来理解,都变得很容易接受。

这里只是简单地介绍了IO流技术的一部分,很多细节需要到项目中去实践,才能够不断地有新的认识。

由于要经常考虑到异常问题的出现,对于问题的考虑也会比较全面,对于增强我们的业务能力有很大提升呢!





你可能感兴趣的:([JAVA · 初级]:20.IO流技术)