IO流中的字节输出流OutPutStream以及三种写文件实例

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();
				}
				
			}
			
		}
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值