Java基础(5)IO流

IO流

1,分类

Java.io 包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类:

  1. 输入流和输出流:数据流的方向不同。
  2. 字节流和字符流:处理数据单位不同。
  3. 节点流和处理流:功能不同划分。

JDK所提供的所有流类型位于包 Java.io内,都分别继承自以下四种抽象流类型。

输入流:InputStream(字节流),Reader(字符流)

输出流:OutPutStream(字节流),Writer(字符流)

2,字节流和字符流

字节流:最原始的一个流,读出来的数据就是010101这种最底层的数据表示形式,只不过它是按照字节来读的,一个字节(Byte)是8位(bit)读的时候不是一个位一个位的来读,而是一个字节一个字节来读。

字符流:字符流是一个字符一个字符地往外读取数据。一个字符是2个字节

3,输入流和输出流

用一根管道一端插进文件里,一端插进程序里面,然后开始读数据,那么这是输入还是输出呢?

如果站在文件的角度上,这叫输出

如果站在程序的角度上,这叫输入

注意:输入流和输出流都是站在程序的角度上来说。

4,节点流和处理流

你要是对原始的流不满意,你可以在这根管道外面再套其它的管道,套在其它管道之上的流叫处理流。为什么需要处理流呢?这就跟水流里面有杂质,你要过滤它,你可以再套一层管道过滤这些杂质一样。

节点流:从一个特定的数据源(节点)读写数据。(文件,内存)

处理流:连接在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写能力。
在这里插入图片描述

节点流

类型字符流字节流
File(文件)FileReader、FileWriterFileInputStream、FileOutputStream
Memory ArrayCharArrayReader、CharArrayWriterByteArrayInputStream、ByteArrayOutputStream
Memory StringStringReader、StringWriter-
Pipe(管道)PipedReader、PipedWriterPipedInputStream、PipedOutputStream

处理流

处理类型字符流字节流
Buffering 缓冲流BufferedReader、BufferedWriterBufferedInputStream、BufferedOutputStream
FilteringFilterReader、FilterWriterFilterInputStream,FilterOutputStream
Converting between bytes and character 转换流InputStreamReader、OutputStreamWriter
Object Serialization 对象流-ObjectInputStream、ObjectOutputStream
Data conversion 数据流-DataInputStream、DataOutputStream
CountingLineNumberReaderLineNumberInputStream
Peeking aheadPusbackReaderPushbackInputStream
Printing 打印流PrintWriterPrintStream

5,InputStream

继承关系

  • InputStream
    • 节点流
    • FileInputStream
    • PipedInputStream
    • ByteArrayInputStream
    • StringBufferInputStream
    • 处理流
    • FilterInputStream
      • LineNumberInputStream
      • DataInputStream
      • BufferedInputStream
      • PushbackInputStream
    • SequenceInputStream
    • ObjectInputStream

常用方法

//读取一个字节并以整数的形式返回(0~255) 
//如果返回-1就说明已经到了输入流的末尾 
int read() throws IOException 
    
//读取一系列字节并存储到一个数组buffer 
//返回实际读取的字节数,如果读取前已到输入流的末尾,则返回-1 
int read(byte[] buffer) throws IOException 
    
//读取length个字节 
//并存储到一个字节数组buffer,从length位置开始 
//返回实际读取的字节数,如果读取前以到输入流的末尾返回-1. 
int read(byte[] buffer,int offset,int length) throws IOException 
    
//关闭流释放内存资源 
void close() throws IOException 
    
//跳过n个字节不读,返回实际跳过的字节数 
long skip(long n) throws IOException

read()方法是一个字节一个字节地往外读,每读取一个字节,就处理一个字节。

read(byte[] buffer)方法读取数据时,先把读取到的数据填满这个byte[]类型的数组buffer(buffer是内存里面的一块缓冲区),然后再处理数组里面的数据。这就跟我们取水一样,先用一个桶去接,等桶接满水后再处理桶里面的水。

如果是每读取一个字节就处理一个字节,这样子读取也太累了。

6,OutputStream

继承关系

  • OutputStream
    • 节点流
    • FileOutputStream
    • PipedOutputStream
    • ByteArrayOutputStream
    • 处理流
    • FilterOutputStream
      • DataOutputStream
      • BufferedOutputStream
      • PrintStream
    • ObjectOutputStream

常用方法

//向输出流中写入一个字节数据,该字节数据为参数b的低8位 
void write(int b) throws IOException 

//将一个字节类型的数组中的数据写入输出流 
void write(byte[] b) throws IOException 

//将一个字节类型的数组中的从指定位置(off)开始的len个字节写入到输出流 
void write(byte[] b,int off,int len) throws IOException 

//关闭流释放内存资源 
void close() throws IOException 

//将输出流中缓冲的数据全部写出到目的地 
void flush() throws IOException

7,Reader

继承关系

  • Reader
    • 节点流
    • CharArrayReader
    • PipedReader
    • StringReader
    • 处理流
    • BufferedReader
      • LineNumberReader
    • InputStreamReader
      • FileReader(节点流)
    • FilterReader
      • PushbackReader

常用方法

//读取一个字节并以整数的形式返回(0~255) 
//如果返回-1就说明已经到了输入流的末尾 
int read() throws IOException 

//读取一系列字节并存储到一个数组buffer 
//返回实际读取的字节数,如果读取前已到输入流的末尾,则返回-1 int 
read(byte[] buffer) throws IOException 

//读取length个字节 
//并存储到一个字节数组buffer,从length位置开始 
//返回实际读取的字节数,如果读取前以到输入流的末尾返回-1.
int read(byte[] buffer,int offset,int length) throws IOException 
    
//关闭流释放内存资源 
void close() throws IOException 

//跳过n个字节不读,返回实际跳过的字节数 
long skip(long n) throws IOException

8,Writer

继承关系

  • Writer
    • 节点流
    • CharArrayWriter
    • PipedWriter
    • StringWriter
    • 处理流
    • BufferedWriter
    • OutputStreamWriter
      • FileWriter(节点流)
    • FilterWriter

常用方法

//向输出流中写入一个字节数据,该字节数据为参数b的低16位 
void write(int b) throws IOException 

//将一个字节类型的数组中的数据写入输出流 
void write(byte[] b) throws IOException 

//将一个字节类型的数组中的从指定位置(off)开始的len个字节写入到输出流 
void write(byte[] b,int off,int len) throws IOException 

//关闭流释放内存资源 
void close() throws IOException 

//将输出流中缓冲的数据全部写出到目的地 
void flush() throws IOException
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值