Java过滤器流之BufferedInputStream与BufferedOutputStream

简介: 本文目录1. 简介2. BufferedInputStream示例3. BufferedOutputStream示例

1. 简介

过滤器流就是串联在流上,执行一些额外操作的东西。其中很重要,很常用的就是缓冲流BufferedInputStream与BufferedOutputStream。


缓冲流的作用简单而直接而有效,每次读写不是只有几个字节就开始从磁盘等数据源读写,而是先放到内存的缓冲区(其实就是类似于byte[]类型的内存变量中),等缓冲区满了(具体缓冲区多大可以自己定义)再一次性读写数据源。


因为内存读写速度远远快于磁盘等其他介质读写速度,所以缓存的存在是有意义的。


2. BufferedInputStream示例

工具类,保存定义的常量及方法(暂时只有常量)

//工具类
package com.maoge.stream;
import java.io.File;
public class StreamUtils {
  //用于定义每次读取的长度
  public static final int BUFFER_LENGTH=512;
  //文件对象
  public static File FILE_FOR_READ;
  public static File FILE_FOR_WRITE;
  static{
    FILE_FOR_READ=new File("C:\\test.txt"); 
    FILE_FOR_WRITE=new File("C:\\result.txt"); 
  }
}

读取示例,一定要注意文件编码

//使用缓冲流读入
  public static void bufferedRead(){
    InputStream in=null;
    try {
      in = new FileInputStream(StreamUtils.FILE_FOR_READ);
      //使用缓冲流串联,因为BufferedInputStream也是InputStream子类
      in=new BufferedInputStream(in);
      //保存读出的内容
      StringBuilder sb=new StringBuilder();
      //定义缓冲区
      byte[] buffer=new byte[StreamUtils.BUFFER_LENGTH];
      //实际读到的字符长度
      int bytesRead=0;
      while((bytesRead=in.read(buffer))!=-1){
        //注意编码,文本文件要另存为UTF-8格式,然后此处也写明按UTF-8读取。
        sb.append(new String(buffer,0,bytesRead,"UTF-8"));
      }
      System.out.println(sb.toString());
    } catch (Exception ex) {
      System.out.println(ex.toString());
    }finally{
      try {
        in.close();
      } catch (IOException ioEx) {
        System.out.println(ioEx.toString());
      }
    }
  }

3. BufferedOutputStream示例

注意.flush()是强制将缓冲区内容输出到流,因为有时候缓冲区挺大,而且还没满,是不会自动输出到流的,所以有时候就会得不到程序员员设想的结果,所以为了保险,在确保得到结果时先.flush()

public static void bufferedWrite(){
    OutputStream out=null;
    try {
      out = new FileOutputStream(StreamUtils.FILE_FOR_WRITE);
      out=new BufferedOutputStream(out);
      String content="这就是要写入的内容,我要吟诗一首:今天我是真高兴!";
      out.write(content.getBytes(), 0, content.getBytes().length);
      //刷新!
      out.flush();
    } catch (Exception ex) {
      System.out.println(ex.toString());
    }finally{
      try {
        out.close();
      } catch (IOException ioEx) {
        System.out.println(ioEx.toString());
      }
    }
  }


相关文章
|
7月前
|
设计模式 Java
Java设计模式【八】:过滤器模式
Java设计模式【八】:过滤器模式
48 0
|
Java 容器
28JavaWeb基础 - 过滤器
28JavaWeb基础 - 过滤器
58 0
|
7月前
|
Java Spring 容器
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
116 0
|
监控 安全 Java
【JavaWeb】 三大组件之过滤器 Filter
过滤器(Filter)是Java Web应用中的一种组件,它在请求到达Servlet或JSP之前或者响应送回客户端之前,对请求和响应进行预处理和后处理操作。通过使用过滤器,可以对请求进行过滤,拦截请求,修改请求参数,在请求被处理之前进行一些预处理操作;同时也可以对响应进行过滤,对响应内容进行修改,添加一些额外的处理。
|
1月前
|
监控 Java 数据管理
java会话跟踪和拦截器过滤器
本文介绍了Web开发中的会话跟踪技术——Cookie与Session,以及过滤器(Filter)和监听器(Listener)的概念和应用。Cookie通过在客户端记录信息来识别用户,而Session则在服务器端保存用户状态。过滤器用于拦截和处理请求及响应,监听器则监控域对象的状态变化。文章详细解释了这些技术的实现方式、应用场景和主要方法,帮助开发者更好地理解和使用这些工具。
47 1
|
3月前
|
监控 前端开发 Java
Java里的过滤器和拦截器是什么原理,如何选择?
Java里的过滤器和拦截器是什么原理,如何选择?
35 0
|
6月前
|
Java
Java web Filter过滤器
一、什么是Filter过滤器 它是java web的三大组件之一,三大组件分别为:servlet、filter、listener; 它的作用主要是用于拦截请求,过滤响应;拦截请求常见的应用场景有日记记录,权限校验。。。
47 3
|
6月前
|
安全 Java
使用FilterChain实现Java中的过滤器链
使用FilterChain实现Java中的过滤器链
|
6月前
|
前端开发 JavaScript 算法
javaweb(四)——过滤器与监听器
javaweb(四)——过滤器与监听器
|
6月前
|
Java
使用java文件过滤器输出制定格式文件路径
使用java文件过滤器输出制定格式文件路径