I/O流的分类:
流向:输入流 是读取数据的
输出流 是写入数据的
数据类型:
字节流
字节输入流 读取数据 InputStream
字节数出流 写入数据 OutputStream
字符流:
字符输入流,读取数据 Reader
字符输出流,写入数据 Writer
一般我们在探讨IO流的时候,如果没有明确说明哪种分类,默认情况下按照数据类型来分。
FileOutputStream 的构造器
FileOutputStream(File file) //创建文件输出流以写入指定的File对象表示的文件。
FileOutputStream(String name) //创建文件输出流以指定的名称写入文件
FileOutputStream(File file , boolean append) //创建文件输出流以写入由指定的File对象表示的文件,默认是false , 默认是不追加文字在末尾。
举个栗子:
需求:在文本文件中写入两句话:“山穷水尽疑无路,柳暗花明又一村”。
分析: 字节流输出的操作步骤
A. 创建文字输出流对象
B. 写数据
C. 释放资源
//在博客输写的在此省略一些导包了
public class FileOutputStreamDemo{
public static void main(String[] args) throws IOException {
File f = new File("fos.txt");
FileOutputStream fso = new FileOutputStream(f); //自动帮你创建了文件,括号(f,true)这样写则可以追加到文本文字的末尾。
fos.write("山穷水尽疑无路,柳暗花明又一村".getBytes()); //默认是false,
fos.close();
//一定要关闭close. 让流对象变成垃圾,被垃圾回收器回收,通过系统去释放文件相关的资源
}
}
字节数出流操作步骤:
1.创建字节数出流对象
2.调用write()方法
3.释放资源
public void write(int b); 写一个字节
public void write(byte[] b);写一个字节数组
public void write(byte[] b, int off,int len); 写一个字节数组的一部分
public class FileOutputStreamDemo2{
public static void main(String[] args) throws IOException {
OutputStream os = new FileOutputStream("fos.txt",false); //多态
byte[] bs = {97,88,41,36,77,127};
//os.write(97);
//os.write(bs);
os.write(bs,0,bs.length); //len是字节的长度 off字节数组的起始下标。
os.close();
}
}
//输出结果是 :aX)$M