IO——字节缓冲流
缓冲流:BufferedInputStream / BufferedOutputStream
- 提高IO效率,减少访问磁盘的次数
- 数据存储在缓冲区,调用flush将缓存区的内容写入文件中,也可以直接close
BufferedInputStream 继承 FilterInputStream.
在创建BufferedInputStream时,会创建一个内部缓冲区数组。
构造方法:
- BufferedInputStream(InputStream in) //创建一个BufferedInputStream并保存其参数,即输入流in,以便将来使用
- BufferedInputStream(InputStream in,int size) //创建具有指定缓冲区大小的BufferedInputStream并保存其参数,即输入流in,以便将来使用
方法: int availble() //返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字数
void close() //关闭此输入流并释放与该流关联的所有系统资源
void mark(int readlimit) //在此输入流中标记当前位置
abstract int read() //从输入流中读取数据的下一个字节
int read(byte[] b) //从输入流中读取一定数量的字节,并将其存储在缓存区数组b中
int read(byte[] b, int off, int len) //在指定位置将输入流中最多len个数据字节读入b数组
void reset() //将此流重新定位到最后一次对此输入流调用mark方法时的位置
long skip(long n) //跳过和丢弃此输入流中数据的n个字
BufferedOutputStream 与FileOutputStream的方法大致相同,此处省略了就
两者的使用如下
package com.java.leetcode.io; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; /*
使用字节缓冲流
*/
public class Buffered01 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:\\stream01.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
//读取
// int data = 0; //一次读一个
// while ((data = bis.read()) != -1){
// System.out.print((char)data);
// }
//也可以自己创建缓冲区 //bis 和 buffer都是缓冲区
byte[] buffer = new byte[1024];
int count = 0;
while ((count=bis.read(buffer)) != -1){
System.out.print(new String(buffer,0,count));
}
bis.close(); //fis可不关闭 FileOutputStream fos = new FileOutputStream("D:\\stream01.txt",true);
BufferedOutputStream bos = new BufferedOutputStream(fos);
//写入文件
for (int i = 0; i < 2; i++) {
bos.write("buffered".getBytes()); //先写入缓冲区,没有真正写入文件
bos.flush();//写一次刷新一次,此时才刷新到硬盘。效率不高,但是可以防止数据的丢失
}
bos.close();//fos可不关闭,这里调用close()时,内部会调用flush
System.out.println();
}
}
IO——字节缓冲流的更多相关文章
- Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)
Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...
- java——io、字节流缓冲区拷贝文件、字节缓冲流
使用try catch finally关闭文件流: 写入文件: import java.io.*; public class exp{ public static void main(String[] ...
- File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?
重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
- java学习笔记30(IO :缓冲流)
缓冲流: 读取数据大量的文件时,读取的速度慢,java提供了一套缓冲流,提高IO流的效率: 缓冲流分为字节缓冲流和字符缓冲流: 字节输入缓冲流和字节输出缓冲流如下: package com.zs.De ...
- Java字节缓冲流和字符缓冲流学习
1.字节缓冲流 首先要明确一个概念:对文件或其他目标频繁的读写操作,效率低,性能差. 使用缓冲流的好处是,能够高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来. BufferedInp ...
- 字节缓冲流 ( BufferedInputStream / BufferedOutputStream)
package com.sxt.reader; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; imp ...
- IO异常--缓冲流--转换流--序列化流( IO流2 )
1.IO异常的处理 JDK7前处理:使用try...catch...finally 代码块,处理异常部分 // 声明变量 FileWriter fw = null; try { //创建流对象 fw ...
- 字节缓冲流 BufferedOutputStream BufferedInputStream
/*缓冲流:读取数据大量的文件时,读取的速度慢java提供了一套缓冲流 提高io流的效率 * */ package cn.lijun.demo; import java.io.BufferedInpu ...
- Java 之 字节缓冲流
一.字节缓冲输出流 java.io.BufferedOutputStream extends OutputStream BufferedOutputStream:字节缓冲输出流. 继承自父类的共性成员 ...
随机推荐
- dotnet 6 使用 string.Create 提升字符串创建和拼接性能
本文告诉大家,在 dotnet 6 或更高版本的 dotnet 里,如何使用 string.Create 提升字符串创建和拼接的性能,减少拼接字符串时,需要额外申请的内存,从而减少内存回收压力 本文也 ...
- Git常见错误整理
参考文章 git 排错 fatal: 'git status --porcelain' failed in submodule abi/cpp 1 fatal: 'git status --porce ...
- 半吊子菜鸟学Web开发4 --Html css学习2
1<a>标签,链接到另一个页面 <a href="目标网址" title="鼠标滑过显示的文本">链接显示的文本</a> H ...
- Snort中pcre和正则表达式的使用
Snort中pcre和正则表达式的使用 1. 题目描述 If snort see two packets in a TCP flow with first packet has "login ...
- Linux 环境部署Skywalking支持Elasticsearch
一.环境准备 1.Java JKD 1.8(建议) 2.Elasticsearch 3.Skywalking 二. 环境搭建 安装Skywalking分为两个步骤: a.安装Backend后端服务 b ...
- Kafka学习(一)
作者:普适极客链接:https://www.zhihu.com/question/53331259/answer/1321992772来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- 什么是 Hystrix?它如何实现容错?
Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性.通常对于使用微服 构开发的系统,涉及到许多微服务 ...
- 什么是 MyBatis 的接口绑定?有哪些实现方式?
接口绑定,就是在 MyBatis 中任意定义接口,然后把接口里面的方法和 SQL 语句绑 定, 我们直接调用接口方法就可以,这样比起原来了 SqlSession 提供的方法我们可 以有更加灵活的选择和 ...
- SpringAOP+RabbitMQ+WebSocket实战
背景 最近公司的客户要求,分配给员工的任务除了有微信通知外,还希望PC端的网页也能实时收到通知.管理员分配任务是在我们的系统A,而员工接受任务是在系统B.两个系统都是现在已投入使用的系统. 技术选型 ...
- 学习Keepalived(一)
一.Keepalived 详解 1.Keepalived 定义 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障.一个LVS服务会有2台服务器运行Ke ...