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:字节缓冲输出流. 继承自父类的共性成员 ...
随机推荐
- 如何绑定msix中断 cpu亲和性
echo X > /proc/irq/中断号/smp_affinity /proc/irq目录下面会为每个注册的irq创建一个以irq编号为名字的子目录,每个子目录下分别有以下条目:1.smp_ ...
- JAVA视频笔记(一)
搭建pho开发环境与框架图 韩顺平 第一章: No1 关于文件以及文件夹的管理 将生成的文本文档做成详细信息的形式,显示文件修改时间以及文件大小,便于文件查看和管理,也是对于一名IT人士高效能工作的 ...
- 浅析Java反射--Java
前言 上篇文章我们提到了可以使用反射机制破解单例模式.这篇文章我们就来谈一谈什么是反射,反射有什么用,怎么用,怎么实现反射. 概述 Java的反射(reflection)机制:是指在程序的运行状态中, ...
- Linux源码安装RabbitMQ高可用集群
1.环境说明 linux版本:CentOS Linux release 7.9.2009 erlang版本:erlang-24.0 rabbitmq版本:rabbitmq_server-3.9.13 ...
- Spring Cloud与Spring Boot版本匹之间的关系
由于学习的起步较晚,创建项目的时候一直采用的都是较新的springboot,用的2.0.2.RELEASE版本.参照网上的示例进行实验的时候,有时候会才坑,特记录一二以备忘 首先就是SpringBoo ...
- 实现一个函数功能:sum(1,2,3,4..n)转化为 sum(1)(2)(3)(4)…(n)?
// 使用柯里化 + 递归function curry ( fn ) { var c = (...arg) => (fn.length === arg.length) ? ...
- 深入理解Java虚拟机-内存分配与回收策略
一.内存分配策略 新生代中98%的对象都是"朝生夕死"的,所以并不需要按照1:1的比例来划分内存空间,而是将内存(新生代内存)分为一块较大的Eden(伊甸园)空间和两块较小的Sur ...
- java中线程池创建的几种方式
java中创建线程池的方式一般有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize ...
- Java 中,DOM 和 SAX 解析器有什么不同?
DOM 解析器将整个 XML 文档加载到内存来创建一棵 DOM 模型树,这样可以 更快的查找节点和修改 XML 结构,而 SAX 解析器是一个基于事件的解析器, 不会将整个 XML 文档加载到内存.由 ...
- mysql学习 | LeetCode数据库简单查询练习
力扣:https://leetcode-cn.com/ 力扣网数据库练习:https://leetcode-cn.com/problemset/database/ 文章目录 175. 组合两个表 题解 ...