I/O1——输入/输出流

本文介绍了Java中的输入/输出流(I/O流),包括输入流和输出流的基本概念、使用场景和主要类。输入流如InputStream和Reader用于从源读取数据,输出流如OutputStream和Writer则用于将数据写入目标。文章列举了各类流的子类及其功能,如FileInputStream、FileOutputStream等,并概述了常用方法,如read、write、flush和close。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流是一组有序的数据序列,根据操作的类型,可以分为输入流和输出流两种。I/O(Input/Output,输入/输出)流提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。


Java由数据流处理输入/输出模式,程序从指向源的输入流中读取源中的数据。源可以是文件、网络、压缩包或者其他数据源。


(输入模式)

输出流的指向是数据要到达的目的地,程序通过向输出流中写入数据把信息传递到目的地。输出流的目标可以是文件、网络、压缩包或者其他数据输出目标。


(输出模式)



Java语言定义了许多类专门负责各种方式的输入/输出,这些类都放在java.io包中。其中,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输出流)或者抽象类Writer(字符输出流)的子类。


输入流

InputStream类

InputStream类的具体层次结构


1) FileInputStream把一个文件作为InputStream,实现对文件的读取操作      
 2) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用  
 3) StringBufferInputStream:把一个String对象作为InputStream  
 4) PipedInputStream:实现了pipe的概念,主要在线程中使用  
 5) SequenceInputStream:把多个InputStream合并为一个InputStream
 

.............

下面是对该类中的一些方法的简要说明

read()方法:从输入流中读取数据的下一个字节。返回0——255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节时,返回-1.

read(byte[]b)方法:从输入流中读入一定长度的字节,并以整数的形式返回字节数。

mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。

reset()方法:将输入指针返回到当前所做的标记处。

skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数。

close()方法:关闭此输入流并释放与该流关联的所有系统资源。

具体了解InputStream类点击打开链接


Reader类

java中的字符是Unicode编码,是双字节的,所以java处理字节提供了InputStream类,而处理字符文本的输入专门提供了一套单独的类Reader。Reader类是字符输入流的抽象类,所有字符输入流的实现都它的子类。

Reader类的具体层次结构


Reader的部分源码

  1. public abstract class Reader implements Readable, Closeable {  
  2.     // 每次读取一个字符  
  3.     public int read() throws IOException {  
  4.         char cb[] = new char[1];  
  5.         if (read(cb, 01) == -1)  
  6.             return -1;  
  7.         else  
  8.             return cb[0];  
  9.     }  
  10.   
  11.     abstract public int read(char cbuf[], int off, int len) throws IOException;  
  12.       
  13.     // ...... 省略  ......  
  14.   
  15. }  

具体了解Reader类    请戳我

输出流

OutputStream类

OutputStream类是字节输出流的抽象类,此抽象类是表示输出字节流的所有类的超类。

OutputStream类的具体层次结构图



OutputStream类中的所有方法均返回void,在遇到错误时会引发IOException异常。


下面是对该类中的一些方法的简要说明

write(int b)方法:将指定的字节写入此输出流。

write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。

write(byte[] b,int off,int len)方法:将指定的byte数组中从偏移量off开始的len个字节写入此输出流。

flush()方法:彻底完成输出并清空缓存区。

close()方法:关闭输出流


了解更详细点击打开链接

Writer类

Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类。

Writer的具体结构层次图


了解更多点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值