Java开发知识之JavaIO操作缓存操作
带缓存的输入/输出流
一丶简介
缓存是I/O的一种性能优化.缓存流为 I/O 流增加了内存缓存区.有了缓存区,那么在流上执行 skip().mark() reset()方法,都成为可能.
总来的来说其实就是通过缓存读写.执行效率更高,更快.
二丶BufferedInputStream 与 BufferedOutputString类.
- BufferedInputString(InputStream in)可以对所有InputString类进行带缓存的包装,达到性能优化.
1.两种构造方法
第一种: 传入一个InPutStream类的实现类对他做包装,带有32个字节的缓存.
第二种: 指定一个大小.
比如读取文件,BufferdInputStream对象位于InputStream类对象之前.
2.BufferOutputStream类.
1.构造方法
使用BufferdOutputStream输出信合和用OutputStream输出信息一样.只不过BufferedOutputStream有一个flush方法,用来将缓存区的数据强制输出玩.
只不过翻过来了,第一种就是构造32个字节缓存.第二个指定大小.创建.
-针对BufferedInputStream做包装实例
private static void File() throws Exception {
// TODO 自动生成的方法存根
File f = new File("1.txt");//创建一个文件
InputStream in = new FileInputStream(f);
BufferedInputStream inn = new BufferedInputStream(in);//对in做包装
byte[] a = new byte[10];
inn.read(a);//利用缓冲区读取
System.out.println(Arrays.toString(a));//输出字节数组内容.
System.out.println(new String(a)); //字节数组,转为字符串显示.
}
输出结果.
BufferedOutputStream类实例
private static void File() throws Exception {
// TODO 自动生成的方法存根
File f = new File("1.txt");//创建一个文件
InputStream in = new FileInputStream(f);
OutputStream out = new FileOutputStream(f);
BufferedOutputStream outBuf = new BufferedOutputStream(out);
outBuf.write(new String("HelloWroldssss sdfsdfsdf").getBytes());
outBuf.flush();
outBuf.close();
}
文件中的结果
三丶BufferedReader类与BufferedWriter类
我们曾经说过,Java是Unicode字节集.所以字节读取可能出现错误.
然后针对这种错误,出现了Reader类以及Writer类.而缓冲流也针对这两个类实现了.就是上面所说的类.也就是内部缓存类.
用法跟上面的BufferedInputStream类一样.
1.BufferedReader缓存类的使用介绍.
-1.文件读取流程
提供的方法
代码例子
private static void File() throws Exception {
// TODO 自动生成的方法存根
File f = new File("1.txt");//创建一个文件
Writer wfile = new FileWriter(f); //创建写文件UNICODE形式.
BufferedWriter wBufferFile = new BufferedWriter(wfile);//对写文件创建缓冲区.
String str[] = {"今天","你","学习了吗"};
//写入文件
for(int i = 0; i < str.length;i++) {
wBufferFile.write(str[i]);//循环写入
wBufferFile.flush();
}
wBufferFile.close();
}
实现结果
四丶数据输入/输出流
数据输入输出流(DataInputStream与DataOutputStream)允许应用程序与机器无关的方式,从底层输入流中读取基本的java数据类型,也就是说,当读取一个数据的时候,不用关心这个数值应该是那种字节了.
1.构造以及常用方法
java是Unicode编码.上字节.writebytes知识将字符中的每一个字符的低字节内容写到目标设备
writeChars将字符串中的两个字节内容写到目标设备
writeUtf则是按照UTF方式写入到目标设备.
输入流,提供了ReadUTF()用于读取,并且返回字符串.
例子:
private static void File() throws Exception {
// TODO 自动生成的方法存根
File f = new File("1.txt");//创建一个文件
OutputStream wfile =new FileOutputStream(f); //创建写文件UNICODE形式.
DataOutputStream out = new DataOutputStream(wfile);
String str[] = {"今天","你","学习了吗"};
//写入文件
out.writeChars("今");
out.close();
}
总结
其实都是对输入输出流做的缓存封装,在流上封装了新的方法.读取数据.
相关文章
- 在java中构建高效的结果缓存
- 设计模式java——中介者模式
- 在阿里呆了九年的顶尖大佬手码 Java 三大中间件手册,看完后各大厂都想要我加入他们!
- 阿里 P8 熬了两个月肝出这份 32W 字 Java 面试手册,在 Github 标星 31K+
- 第87节:Java中的Bootstrap基础与SQL入门
- Java log4j slf4j 日志配置笔记
- java.io.BufferedInputStream 源码分析
- Java StringBuffer & StringBuilder,超详细整理,适合新手入门
- Java String 类,超详细整理,适合新手入门
- java 条件编译
- Java中如何使用Redis做缓存
- 在java中构建高效的结果缓存
- JAVA项目中关于字典学习,和缓存搭配使用的方法
- Java并发编程(五)Lock
- java操作hdfs到数据库或者缓存
- ehcache memcache redis -- java中的三大缓存
- [转]LRU缓存实现(Java)
- 【Java】Cron表达式
- java 开源缓存框架--转载
- Java idea 执行单个测试方法
- java web开发中常用的协议的使用和java-web 常见的缓存技术