Buffered增强添加IO流功能

之前已经简单介绍过IO流的输入输出基础,这次介绍增强IO输入输出流功能的Buffered

通过以下图,本来IO流有吸管大小功能,通过Buffered吸管变大,功能增加


下面我们通过代码来实现实际功能,先介绍BufferedInputStream,首先我们先查看api


看到有构造方法,说明我们要使用要用new,然后在BufferedInputStream后的参数需要传入一个InputStream类,我们先新建一个“zzq.txt”,通过new一个BufferedInputStream,传入InputStream的子类FileInputStream,通过构建一个数组,初始化int,然后写一个while循环读取,当不等于-1说明读取还没有结束(可以通过把鼠标放在read上面查看read的return返回值来使用),这样我们就可以读取“zzq.txt”里面的内容了

	public static void test1() {
		try {
			BufferedInputStream is = new BufferedInputStream(new FileInputStream("zzq.txt"));
			byte b[] = new byte[1024];
			int i = 0;
			while((i=is.read(b))!=-1){
				System.out.println(new String(b));
			}
			is.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
在上面的代码里可能看不出Buffered的作用,下面介绍BufferedReader的用法,首先还是先查看api


看到构造方法,所以要使用它得new一个,然后看到它的方法摘要,可以读取一个文本行,因为Buffered提供了一个缓存空间,我们可以把正行内容都读取然后放在缓存空间,最后再一次性读出来,而不是之前的一个字节一个字节的读取了,下面我们开始上代码:通过api知道BufferedReader里面放一个Reader参数,所以我们把InputStreamReader放进去,然后我们要读取一个文件,所以我们在InputStreamReader里面放一个FileInputStream,然后使用while循环读取,用ready判断流是否准备好,然后用readLine重复读取一整行,最后输出读取到的内容,用Buffered包装可以增加直接读取一行而不用写一个数组的功能,还有修改字符编码格式的功能

public static void test2() {
		BufferedReader br = null;
		try {
			br = new BufferedReader(new InputStreamReader(new FileInputStream("zzq.txt")));
			while (br.ready()) {
				String str = br.readLine();
				System.out.println(str);
			}

		} catch (UnsupportedEncodingException | FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
接下来介绍BufferedWrite的用法,首先还是先看api


看到构造方法,所以要使用首先就要new一个,然后看到BufferedWrite后面要加一个Writer参数,把OutputStreamWriter放进去,然后我们要写入到一个文件,所以使用FileOutputStream,这样,在后面的参数,可以加入文件名,还有当我们输入新的内容时可以设置不覆盖(默认是false覆盖,true就是不覆盖),还可以使用newLine用法,增加一个换行符,使OutputStream功能更加强大

	public static void test3() {
		BufferedWriter bw = null;
		try {
			bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("zzq.txt", true)));
			bw.write("哈喽");
			bw.newLine();
			bw.write("我是zzq");
			bw.flush();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				bw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
当然还有其他的类及方法,上面通过查阅api及简单的用法进行说明,如果需要其他功能,可以通过查阅api来使用,(附)中文在线api文档:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值