文章目录
0.本篇摘要
字节流-缓冲流(重点)
输入流InputStream-FileInputStream-BufferedInputStream
输出流OutputStream-FileOutputStream-BufferedOutputStream
字符流-缓冲流(重点)
输入流Reader-FileReader-BufferedReader
输出流Writer-FileWriter-BufferedWriter
转换流
InputSteamReader和OutputStreamWriter
对象流(难点)
ObjectInputStream和ObjectOutputStream 序列化
反序列化
随机存取流RandomAccessFile(掌握读取、写入)
1.缓冲流
字节流,字符流,这种是计算机和硬盘之间的io, 读写速度慢。 缓冲流基于内存的io操作比基于硬盘的io操作快75000倍
BufferedInputStream 代替 FileInputStream
BufferedOutputStream 代替 FileOutputStream
BufferedReader 代替 FileReader
BufferedWriter 代替 FileWriter
基于内存的io操作比基于硬盘的io操作快75000倍
1.1缓冲字节流
BufferedInputStream 代替 FileInputStream
BufferedOutputStream 代替 FileOutputStream
代码示例:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test {
public static void main(String[] args) throws Exception {
Test.testBufferedInputStream();
Test.copyFile(inPath, outPath);//有参的方法,调用
}
/**
* 缓冲字节输入流
* BufferedInputStream
* @throws Exception
*/
public static void testBufferedInputStream() throws Exception {
//文件字节输入流对象
FileInputStream in = new FileInputStream("D:\\tt.txt");
//把文件字节输入流放到缓冲字节输入流对象
BufferedInputStream br = new BufferedInputStream(in);
//因为是字节流,要定义byte数组存放
byte[] b = new byte[10];
//输出为字符串
System.out.println(new String(b));
//关闭流,先开后关。
br.close();
in.close();//去main方法中测试
}
/**
* 缓冲字节输出流
* BufferedOutputStream
*/
public static void testBufferedOutputStream() throws Exception{
//创建字节输出流对象
FileOutputStream out = new FileOutputStream("D:\\tt.txt");
//把字节输出流对象放到缓冲字节输出流中
BufferedOutputStream bo = new BufferedOutputStream(out);
String s = "hello world";
bo.write(s.getBytes());//写到内存中
bo.flush();//刷到硬盘上
//关闭流的时候,本着一个最晚开的最早关,依次关
bo.close();
out.close();
}
public static void copyFile(String inPath, String outPath) throws Exception {
BufferedInputStream br = new BufferedInputStream(new FileInputStream(inPath));//这里是采用匿名对象的方法
BufferedOutputStream bo = new BufferedOutputStream<