I/O流的定义
输入输出(input/output,I/O)技术用于处理设备之间的数据传输,用于程序与外部设备或其他计算机进行数据交换的过程,比如:读/写文件、网络通信等。
对于程序而言,将外部数据(磁盘、光盘等存储设备的数据)读到程序(内存)中成为输入(input),将程序(内存)数据输出到光盘、磁盘等存储设备中成为输出(output)。
流(stream),是在Java程序中,对于数据的输入输出操作以“流”的方式进行。
I/O流按照操作数据单位不同分为字节流和字符流。其中字符流只能处理纯文本文件,而字节流是万能流。
Java的输入输出流体系提供就几十个类,下面为常用的流:
所以I/O流,可以想象成用自来水的输送,首先自来水厂准备好水源[1],打开管道将水输进架设好的管道[2],被运输的水便会顺着管道输送到用户家里[3],在水储蓄满了后,就关闭管道[4],防止水的漫出。
这就可以总结出I/O流使用的四个步骤:
1. 确定流
2. 打开流
3. 操作流
4. 关闭流
file类实例
运用FileInputStream和FileOutputStream来进行文件I/O操作
//实现文件的复制
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class copeFile {
public static void main(String[] args){
//确定流
String src = "address";//address为你所选择的输入文件实际地址
String dest = "toaddress";//toaddress为输出文件实际地址
copeFile(src,dest,1024);
}
public static void copeFile(String src,String dest,int map){
//打开流
FileInputStream fit = null;
FileOutputStream fot = null;
try {
fit = new FileInputStream(src);
fot = new FileOutputStream(dest);
//操作流
byte[] bytes = new byte[map];//用bytes数组来进行数据缓存
while(fit.read(bytes) != -1){//“-1”时表示文件读取完毕
fot.write(bytes);
fot.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭流
try{
fot.close();
}catch (Exception e){
e.printStackTrace();
}
try{
fit.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
注意:
-
流打开顺序遵循:先开后关,后开先关
-
顺序存取:按文本顺序读/写字节,不能随机访问中间的数据。(RandomAccessFile除外)
-
只读或只写:每个流只能是输入流或输出流的一种,不能同时具备两个功能。