文章目录
- 1、字节输出流操作(向文件写数据):OutPutStream(抽象类)
- 2、三种方式写文件实例
- 3、异常处理实例
1、字节输出流操作(向文件写数据):OutPutStream(抽象类)
可以用来传输字符数据,但是效率低,一般都是用来传递字节数据
a) 实现类FileOutputStream的构造方法
i. FileOutputStream(File file) 需要先封装文件对象再操作文件
ii. FileOutPutStream(String name)常用且简单,直接操作文件名字
iii. FileOutPutStream(String name,boolean append)append为true则是在文件后面追加写入
iv. FileOutPutStream(File file,boolean append)append为true则是在文件后面追加写入
b) 字节输出流操作步骤:
i. 创建字节输出流对象
ii. 写数据
iii. 释放资源
c) 创建字节输出流对象做了哪些事情?
i. 调用系统功能创建文件,
ii. 创建对象,
iii. 将对象指向文件
d) 对文件操作结束后必须关闭并释放资源 格式:对象名.close()
i. 让流对象变成垃圾,从而被垃圾回收器回收
ii. 通知系统释放该文件相关资源
e) 字节流写入数据的方式
i. public void write(int b) 写一个字节
ii. public void write(byte []b ) 写一个字节数组
iii. public void write(byte []b,int off ,int len) 写字节数组的一部分
1. off为开始位置,len为写入长度
iv. 三种方式写入数据实例在下面给出
f) 如何实现数据的换行
加入换行符
i. windows:\r\n
ii. linux: \n
iii. Mac: \r
g) 读数据缓冲区类(使用缓冲区会提高效率)BufferedOutputStream
i. 构造方法
BufferedOutputStream(OutputStream out)
传递的不是一个具体文件或路径,而是一个OutputStream对象
ii. 成员方法和FileOutputStream类相同
h) 字节流转换为字符流的方法:
i. OutputStreamWriter(OutputStream out) 根据默认编码把字节流转换为字符流
ii. OutputStreamWriter(OutputStream out, String charsetName) 根据指定编码把字节流转化为字符流
2、三种方式写文件实例
代码
package test1_FileOutPutStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 使用输出缓冲区测试文件输出流中的三种write方法:
*
* i. public void write(int b) 写一个字节
* ii. public void write(byte []b ) 写一个字节数组
* iii.public void write(byte []b,int off ,int len) 写字节数组的一部分
*
*/
public class Demo {
public static void main(String[] args) throws IOException {
BufferedOutputStream bos=new BufferedOutputStream(
//文件会自动被创建,默认路径为该工程目录,
new FileOutputStream("Demo1.txt"));
//文件追加写入,创建文件输出流对象时加入true
// BufferedOutputStream bos=new BufferedOutputStream(
// //文件会自动被创建,默认路径为该工程目录,
// new FileOutputStream("Demo1.txt",true));
//
//方式一
bos.write(97);
//加入换行符
bos.write("\n".getBytes());
byte []b= {66,67,68,69};
//方式二
bos.write(b, 2, 1);
bos.write("\n".getBytes());
//方式三
bos.write(b);
bos.write("\n".getBytes());
bos.close();
}
}
输出文件
3、异常处理实例
package test1_FileOutPutStream;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 加入异常处理的字节输出流操作
*/
public class ExceptionDemo {
public static void main(String[] args) {
BufferedOutputStream bos=null;
try {
bos = new BufferedOutputStream(
new FileOutputStream("z:\\ExceptionDemo1"));
bos.write("zfliu".getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally {
//如果创建文件输出流对象时对象未创建成功bos仍为null
// 这时没有用到系统资源,因此不需要释放close()
// 如果没用到资源但是close()系统会报空指针异常NullPointerException
if(bos!=null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}