定义:
IO是指的用来进行设备间的数据传输问题。
IO流的分类:
流向:
输入流 读取数据
输出流 写出数据
数据类型:
字节流
字节输入流 读取数据 InputStream
字节输出流 写出数据 OutputStream
字符流
字符输入流 读取数据 Reader
字符输出流 写出数据 Writer
上面我们可以看到IO流分类主要有两种方式(1、按流向2、按数据类型)。并且在数据类型中分别又有两种读写的方式。
写入数据
现在我们用一个简单的java例子对进行学习:
public class FileOutputStreamDemo {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("fos.txt");
/*
* 创建字节输出流对象了做了几件事情:
* A:调用系统功能去创建文件
* B:创建fos对象
* C:把fos对象指向这个文件
*/
//写数据
fos.write("hello,IO".getBytes());
fos.write("java".getBytes());
fos.close();
/*
* 为什么一定要close()呢?
* A:让流对象变成垃圾,这样就可以被垃圾回收器回收了
* B:通知系统去释放跟该文件相关的资源
*/
}
}
总结以上代码我们可以得到字节输出流操作步骤:
A:创建字节输出流对象
B:写数据
C:释放资源
除了以上两种方法外我们还可以使用
//public void write(byte[] b):写一个字节数组
byte[] bys={97,98,99,100,101};
fos.write(bys);
直接写入一个字节数组
//public void write(byte[] b,int off,int len):写一个字节数组的一部分(这里表示从字节数组bys中索引1开始往后写3个字节)
fos.write(bys,1,3);
写入一个字节数组一部分。
同样我们还可以在创建FileOutputStream对象是使用期另一个构造方法:
FileOutputStream fos = new FileOutputStream("fos.txt", true);
// 创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
在写入数据时fos.write("\n".getBytes());
该语句表示换行