java IO流

来源:互联网 发布:苹果版手机淘宝 编辑:程序博客网 时间:2024/05/01 16:38

别想一下造出大海,必须先由小河川开始。


java中按照流的方向不同可以分为 输入流和输出流。

java中按照处理的数据单位不同分为 字节流和字符流。


输入流是从 文件读数据到程序中

输出流是从 程序写数据到文件中

字节流一次输入或输出:8位二进制

字符流一次输入或输出:16位二进制


字节流可以处理所有类型数据,如图片、MP3、AVI视频文件,而字符流只能处理字符数据,只要是处理纯文本数据,就优先考虑使用字符流,其余的使用字节流。


常用的四个基类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流)

IO流大体的结构图如下:




Buffer缓冲流:BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter。是带缓冲区的处理流,

缓冲区的作用是避免每次和硬盘打交道,提高数据访问效率。

例子:BufferedInputStream bi = new BufferedInputStream(new FileInputStream(文件路径));


转换流:主要作用将字节流转换成字符流。用处较大!

InputStreamReader主要和InputStream套接

OutputStreamWriter主要和OutputStream套接

例子:OutputStreamWriter out = new OutputStream(new FileOutputStream(文件路径));


Print流

Print流只有输出流无输入流,PrintWriter和PrintStream分别针对字符字节

两个类提供了重载的Print和Println方法用于多种数据类型的输出

PrintWriter和PrintStream的输出操作不会抛出异常

PrintWriter和PrintStream有自动flush功能

一般是打印到控制台,可以进行控制打印的地方。


对象流

ObjectInputStreamObjectOutputStream,(实现对象的序列化)用于直接把对象写入文件和从文件中读取对象,而不是一个个在转换成字符串再输入输出。

只有实现了Serializable接口的对象才可以被读写,Serializable接口只是个标记接口,没有定义方法。

writeObject(o)、readObject()是对象读写操作时用的方法。


数据流:DataInputStreamDataOutputStream

因为平时若是我们输出一个8个字节的long类型或4个字节的float类型,那怎么办呢?可以一个字节一个字节输出,也可以把转换成字符串输出,但是这样转换费时间,若是直接输出该多好啊,因此这个数据流就解决了我们输出数据类型的困难。数据流可以直接输出float类型或long类型,支持直接输出输入各种数据类型,提高了数据读写的效率。

例子:long类型转换成byte类型输出

long n = 100000l;

DateOutputStream dos = new DateOutputStream(new ByteArrayOutputStream());

dos.writeLong(n);



IO例子: 复制文件操作,复制文件夹操作,删除文件目录操作








0 0
原创粉丝点击