文章目录
IO流概述和分类
IO 流介绍
1.IO :输入/输出(Input/Output)
2.流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输
3.IO 流就是用来处理设备间数据传输问题的。常见的应用:文件复制;文件上传;文件下载
IO 流的分类
1.按照数据的流向
- 输入流:读数据
- 输出流:写数据
2.按照数据类型来分
- 字节流
字节输入流
字节输出流 - 字符流
字符输入流
字符输出流
3.IO 流的使用场景
- 如果操作的是纯文本文件,优先使用字符流
- 如果操作的是图片、视频、音频等二进制文件。优先使用字节流
- 如果不确定文件类型,优先使用字节流。字节流是万能的流
4.总体分为字节流和字符流,如下所示:
字节流
字节输出流
一、 概述
1.OutputStream :这个抽象类是表示字节输出流的所有类的超类
2.FileOutputStream(String name) :创建文件输出流以指定的名称写入文件,步骤如下
- 创建字节输出流对象 (调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)如:FileOutputStream fos = new FileOutputStream(“zy\\java”,true);
- 调用字节输出流对象的写数据方法
- 释放资源 (关闭此文件输出流并释放与此流相关联的任何系统资源)
二、 写数据方法
如:
//ab
fos.write(“abc”.getBytes(),0,2);
//abc
byte[] bys = “abc”.getBytes();
fos.write(bys);
三、 写数据的两个小问题
1.字节流写数据如何实现换行 windows:\r\n
如:fos.write("\r\n".getBytes());
2.字节流写数据如何实现追加写入
- public FileOutputStream(String name,boolean append)
- 创建文件输出流以指定的名称写入文件。如果第二个参数为 true ,则字节将写入文件的末尾而不是开头
四、用try-catch-finally进行异常处理
try {
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}finally{
执行所有清除操作;
}
被 finally控制的语句一定会执行,除非JVM退出
public class FileOutputStreamDemo04 {
public static void main(String[] args) {
//加入finally来实现释放资源
FileOutputStream fos = null;
try {
fos = new FileOutputStream("myByteStream\\fos.txt");
fos.write("hello".getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
jdk7改进方案:
//不用释放资源了,自动释放
try(FileReader fr = new FileReader("fr.txt");
FileWriter fw = new FileWriter("fw.txt");){
char[] chs = new char[1024