1、不追加的情况
- 创建一个字节输出流 管道 通向目标文件 路径 ,每次运行都会 先清空之前的数据,写新的数据进入
package com.csdn.d2_byte_stream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class OutputStreamDemo04 {
public static void main(String[] args) throws IOException {
//1.创建一个文件字节输出流管道与目标文件接通,文件不用创建,自动生成文件
//每次运行都会 先清空之前的数据,写新的数据进入
OutputStream os = new FileOutputStream("src\\hard.txt");
//2.写数据到 hard.txt
os.write('a');//a
os.write(98);//b
os.write('吃');//
os.write("\r\n".getBytes());
byte[] buffer = {'a', 97, 98, 99};
os.write(buffer);
os.write("\r\n".getBytes());
byte[] buffer2 = "我是中国人".getBytes();
os.write(buffer2);
os.write("\r\n".getBytes());
byte[] buffer3 = {'a', 97, 98, 99};
os.write(buffer3, 0, 3);
//写数据,必须刷新数据,可以继续使用流
os.flush();
//释放资源,包含了刷新的!关闭后流不可以使用
os.close();
}
}
- 无论执行多少次程序,都不会追加, 每次运行都会 先清空之前的数据,写新的数据进入
2、追加的情况
- 创建一个 追加 数据的字节输出流 管道 通向目标文件 路径。
package com.csdn.d2_byte_stream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class OutputStreamDemo04 {
public static void main(String[] args) throws IOException {
//1.创建一个追加文件字节输出流管道与目标文件接通,文件不用创建,自动生成文件
OutputStream os = new FileOutputStream("src\\hard.txt", true);
//2.写数据到 hard.txt
os.write('a');//a
os.write(98);//b
os.write('吃');//
os.write("\r\n".getBytes());
byte[] buffer = {'a', 97, 98, 99};
os.write(buffer);
os.write("\r\n".getBytes());
byte[] buffer2 = "我是中国人".getBytes();
os.write(buffer2);
os.write("\r\n".getBytes());
byte[] buffer3 = {'a', 97, 98, 99};
os.write(buffer3, 0, 3);
//写数据,必须刷新数据,可以继续使用流
os.flush();
//释放资源,包含了刷新的!关闭后流不可以使用
os.close();
}
}
- 程序执行 3 次,发生追加效果,出现3次结果,不会删除之前的数据
- 作用:以 内存 为基准,把内存中的数据以字节的形式写出到磁盘文件中去的流。
构造器 | 说明 |
---|
public FileOutputStream(File file) | 创建字节输出流 管道 与源文件 对象 接通 |
public FileOutputStream(File file,boolean append) | 创建字节输出流 管道 与源文件 对象 接通,可追加数据 |
public FileOutputStream(String filepath) | 创建字节输出流 管道 与 源文件 路径 接通 |
public FileOutputStream(String filepath,boolean append) | 创建字节输出流 管道 与 源文件 路径 接通,可追加数据 |
方法名称 | 说明 |
---|
public void write(int a) | 写一个字节出去 |
public void write(byte [ ] buffer ) | 写一个字节数组出去 |
public void write(byte [ ] buffer,int pos,int len) | 写一个字节数组的一部分出去 |
方法 | 说明 |
---|
flush() | 刷新流,还可以继续写数据 |
close() | 关闭流,释放资源,但是在关闭之前会先刷新流。一旦关闭,就不能再写数据 |
3、字节输出流如何实现写出去的数据能换行
- os.write(“ \ r \ n ”.getBytes())
4、如何让写出去的数据能成功生效?
- flush()刷新数据
- close()方法是关闭流,关闭包含刷新,关闭后流不可以继续使用了。