IO流四个抽象及类
1.字节输出流,写入任意文件
OutputStream
write 字节数组 字节数组的一部分 单个字节
close 释放资源
flush 刷新资源,强制刷新资源
2.字节输入流,读取任意文件
InputStream
read 字节数组 字节数组的一部分 单个字节
close 关闭资源
3.字符输出流 读取文本文件
Write
write 字符输出 字节数组的一部分 单个字符 写字符串
flush 刷新内存,写完字符输出流必须强制刷新
close 关闭资源
4.字符输入流 读取文本文件
Reader
read 字符数组 字符数组的一部分 单个字符
close 关闭资源
package IODemo;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
/**
* @author Alina
* @date 2021年10月14日 9:58 下午
*/
public class FileOutputStreamDemo {
public static void main(String[] args) {
/**
*
* IO文件操作异常梳理
* 文件是否被读取成功,都必须释放资源
* close()写下finally下
* 因为作用域的问题,finally无法识别到未命名的fos 所以必须将fos变成局部变量,在try外声明
*
*/
FileOutputStream fos = null;
FileOutputStream fos2 = null;
//开几个流对象就需要关闭多少流对象,在finally中添加try catch
try {
fos = new FileOutputStream("src/IODemo/test.txt",true);
fos2 = new FileOutputStream("src/IODemo/test.txt",true);
fos.write("我爱你".getBytes(StandardCharsets.UTF_8));
fos2.write("我爱你".getBytes(StandardCharsets.UTF_8));
}catch (IOException e ){
e.printStackTrace();
//此处如果发生异常,无法处理,则让程序停止运行
throw new RuntimeException("停止运行");
}finally {
try{
if(fos!=null){
fos.close();}
}catch (IOException e ) {
e.printStackTrace();
throw new RuntimeException("关闭异常");
}finally {
try {
if (fos2 != null) {
fos2.close();
}
} catch (IOException o) {
o.printStackTrace();
throw new RuntimeException("关闭异常");
}
}
}
}
/** 字节输出流写入文件实现步骤
1.创建子类对象
2.调用子类对象写入方法。write
3.关闭资源
*/
public static void method_write() throws IOException {
FileOutputStream fos = new FileOutputStream("/Users/yuzhang/Desktop/test.txt");
//写入单个字节
fos.write("abc".getBytes(StandardCharsets.UTF_8));
//写入字节数组
byte[] bytes= {100,101,102,103};
fos.write(bytes);
fos.write("你好".getBytes(StandardCharsets.UTF_8));
fos.close();
}
/**
*
* @author Alina
* @date 2021/10/14 10:22 下午
* 1.打开文本文件后,在文本文件中追加内容
* 2.使用构造方法 写入参数true 表示追加
* 2.如果想要在本类目录下创建文件,使用相对地址
*/
public static void method_write1() throws IOException{
FileOutputStream fos = new FileOutputStream("src/IODemo/test.txt",true);
fos.write("中国".getBytes(StandardCharsets.UTF_8));
fos.close();
}
}