JAVA-IO-字节流-字符流-缓冲流-File,看这个
一、IO流分类
1.字节流处理任何数据文件;
2.字符流只能处理纯文本文件;
3.缓冲流基本原理,在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
字节缓冲流:BufferedInputStream,BufferedOutputStream;
字符缓冲流: BufferedReader,BufferedWriter;
二、字节流、文件、缓冲流 的使用
流程思路 :file对象 -> file输入流 --> 字节缓冲输入流 --> 字节数组输入流 --> 数组 --> 字节缓冲输出流 --> file输出流 -->文件
代码如下(示例):
import java.io.*;
public class Aopmain {
public static void main(String[] args) throws IOException {
File file = new File("E:\\PaybillFile\\pdf\\aaa.pdf");
System.out.println(file.getName()); //aaa.pdf
System.out.println(file.getPath()); //E:\PaybillFile\pdf\aaa.pdf
System.out.println(file.getAbsoluteFile());//E:\PaybillFile\pdf\aaa.pdf
System.out.println(file.getAbsolutePath());//E:\PaybillFile\pdf\aaa.pdf
/*
boolean createNewFile(); //创建文件
boolean mkdir();创建文件夹
boolean mkdirs();创建多级文件夹。*/
//本地已有的要发送的文件
File sendFile = new File("D:\\PaybillFile\\sendpdf\\send01.pdf");
//接收文件夹及文件
File receiveFile = new File("D:\\PaybillFile\\sendpdf\\receiveFile.pdf");
//创建文件夹及文件
receiveFile.createNewFile();
//将sendFile 放入文件字节流
FileInputStream fileIO = new FileInputStream(sendFile);
//将文件字节流,放到字节缓冲区,通过缓冲区读写,减少系统IO次数
BufferedInputStream bufferIn01 = new BufferedInputStream(fileIO);
//建一个字节数组输出流,让缓冲流写入
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
byte[] bt = new byte[1024];
int length = -1;
//bufferIn -> bt :从bufferIn流中读1024个字节到 bt, 读完则length=-1;
while((length = bufferIn01.read(bt))!=-1){
//bt -> byteOut :从bt写到byteOut流中
byteOut.write(bt,0,length);
}
//将字节数组输出流,输出到数组
byte[] receiveByte = byteOut.toByteArray();
//文件输出流-->接收文件
FileOutputStream fileOut = new FileOutputStream(receiveFile);
//字节缓冲输出流 --> 文件输出流
BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut);
//将字节数组 --> 字节缓冲输出流
bufferOut.write(receiveByte);
//关流,注意关流顺序
fileIO.close();
bufferIn01.close();
byteOut.flush();
byteOut.close();
bufferOut.flush();
bufferOut.close();
fileOut.flush();;
fileOut.close();
}
}