java IO操作概述

sancaiodm Java 2022-01-26 1247 0

java IO操作概述

什么是流

 流的本质是数据传输,数据有序集合,能从一个端传输到另一端的过程流

image.png

流的分类:

【1】按操作数据单位不同分为:字节流(8 bit),字符流(按字符),

1.什么是字节流?

字节流的基本单位为字节(Byte),一个字节通常为 8 位,它是用来处理二进制(数据)的。字节流有两个基类:InputStream(输入字节流)和 OutputStream(输出字节流)。

image.png

image.png

2.什么是字符流?

字符流的基本单位为 Unicode,大小为两个字节(Byte),它通常用来处理文本数据。字符流的两个基类:Reader(输入字符流)和 Writer(输出字符流)。

image.png

image.png

字符流的效率要比字节流的效率高,但为什么还要存在字节流操作了?

因为字节流操作在对二进制文件操作的,在对图片,声音,视频等文件的处理可以保证文件的正确性,而字符流操作对文本文件 的操作,两者的应用场景不同,

【2】按数据流的流向不同可分为:

流的方向流入与流出是相对程序来说的,如磁盘中的数据读入程序,程序中的数据保存至磁盘流出。

输入流:将数据从介质(磁盘,网络)到当前程序的传输称为输入流;

输出流:将数据从程序写入到存储介质中称为输出流;

输入流是以InputStream和Reader作为基类;

输出流是以OutputStream和Writer作为基类;

【3】按功能分类可分类为:

字节流:字节流是底层流,直接跟数据源相接的,

处理流:处理流[也叫包装流]可以消除不同节点流的实现差异,也可以提供更方便的方法完成输入输出。处理是对节点流的包装,它使用了修饰器设计模式,不会直接与数据源相连。为程序提供更为强大的读写功能,更加灵活执行IO操作,

处理流的功能主要提现:

1性能的提高:主要以增加缓冲的方式来提高输入输出的效率,

2操作的便捷:处理流提供了很多方法方便一次输入输出大批量的数据

BufferedRead与BuffereWrite 是操作字符流的包装类,不能去操作二进制文件

BufferedOutputStream与BufferedInputStream 是对二进制文件操作的处理流类

如:BufferedReader,BufferedWriter  

【4转换流

InputStreamReader 与 OutputStreamWriter, 注意看这两个类,看字面的理解它就是节点流Inputstream与字符流Reader的合并,

InputStreamReader是Reader的子类,它可以将InputStream字节流包装成(转换成)Reader字符流

OutputStreamWriter是Writer的子类,它可以将OutputStream字节流包装成(转换成)Writer字符流

通过转换流的处理可以将纯文本的数据使用字符流处理,这样效率更高,且转换流可以指定编码格式(GBK,uft-8...)


字符流字节流
输入流Reader(抽象基类)InputStream(抽象基类)
输出流Writer(抽象基类)OutputStream(抽象基类)


以下是Androidos.net为大家归纳的部分常用节点流与处理流的常用类


分类字节输出流字节输入流字符输出流字符输入流
节点流抽换基类OutputStreamInputStreamReaderWriter
文件操作FileOutputStreamFileInputStreamFileReaderFileWriter
字符串操作

StringReaderStringWriter
管道操作PipedOutputStreamPipedInputStreamPipedReaderPipedWriter
数组操作ByteArraOutputStreamByteArrayInputStreamCharArrayReaderCharArrayWriter
处理流
抽象基类FilterOutputStreamFilterInputStreamFilterReaderFilterWriter
缓冲流BufferedOutputStreamBufferedInputStreamBufferedReaderBufferedWriter
转换流

InputStreamReaderOutputStreamWriter
对象流ObjectOutputStreamObjectInputStream

打印流
PrintStream
PrintWriter
数据流DataOutputStreamDataInputStream


RandomAccessFile类

该对象既可以对文件进行读操作,也能进行写操作,可以用于多线程下载或多个线程同时写数据到文件

关联知识链接:

Java IO具体操作示例

Java 文件目录及文件的复制删除查找操作

评论