IO流
IO流
IO流的四大家族
/**
* java.io.InputString 字节输入流
* java.io.OutputString 字节输出流
* java.io.Reader 字符输入流
* java.io.Writer 字符输出流
*/
- 所有的流都实现了java.io.Closeable接口,都有close()方法,用完流之后一定要记得关闭,不然会占用很多资源
- 所有的输出流都实现了java.io.Flushable接口,都有flash()方法,清空管道,如果没有flash,可能造成数据的丢失
IO流中需要掌握的16个类
/** 文件专属
* java.io.FileInputStream
* java.io.FileOutputStream
* java.io.FileReader
* java.io.FileWriter
* 转换流
* java.io.InputStreamReader
* java.io.OutputStreamWriter
* 缓冲流
* java.io.BufferInputStream
* java.io.BufferOutputStream
* java.io.BufferReader
* java.io.BufferWriter
* 标准输出流
* java.io.PrintWriter
* java.io.PrintStream
* 数据流专属
* java.io.DataInputStream
* java.io.DataOutputStream
* 对象操作流
* java.io.ObjectInputStream
* java.io.ObjectOutputStream
*/
模板
package com.jiang.io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author JQC
* @date 2021/2/8-20:35
*/
public class InputStreamTest3 {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("基础语法\\src\\com\\jiang\\io\\InputStreamTest3.java");
fos = new FileOutputStream("基础语法/1");
// 一次读一个byte数组
byte[] bytes = new byte[1024];
int readCount = 0;
while ((readCount = fis.read(bytes)) != -1){
// 数组有可能没读完,为了防止多写,所以写到readCount
fos.write(bytes,0,readCount);
}
// 强制清空管道
fos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 避免空指针
// 先开的后关
// 要分开try,不然上面那个抛异常会导致下面那个关不了
if(fos != null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
我成功因为我志在成功
浙公网安备 33010602011771号