缓冲流与打印流(字节与字符)

1、缓冲流

首先要明确一个概念:

对文件或其他目标频繁的读写操作,效率低,性能差

使用缓冲流的好处是,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或读取出来。

BufferedInputStream: 为另一个输入流添加一些功能,在创建BufferedInputStream时,会创建一个内部缓冲区数组,用于缓冲数据。

BufferedOutputStream,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。

BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符,数组,和行的高效读取。

BufferedWriter: 将文本写入字符输出流,缓冲各个字符,从而提供单个字符,数组和字符串的高效写入。

1.1、字节缓冲流:

输出流和输入流:无非加一行代码,其他与之前的没有任何区别

public class Test7 {public static void main(String[] args) {byteWriter();byteReader();}private static void byteReader() {try {InputStream in = new FileInputStream("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");BufferedInputStream bis = new BufferedInputStream(in);byte[] bytes = new byte[1024];int len = -1;while ((len = bis.read(bytes)) != -1) {System.out.print(new String(bytes, 0, len));}} catch (IOException e) {e.printStackTrace();}}private static void byteWriter() {try {OutputStream in = new FileOutputStream("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt", true);BufferedOutputStream bof = new BufferedOutputStream(in);bof.write("我是字节缓冲流".getBytes());bof.close();} catch (IOException e) {e.printStackTrace();}}
}

1.2、字符缓冲流:

输出流和输入流:

public class Test7 {public static void main(String[] args) {   charWriter();charReader();}private static void charWriter() {BufferedWriter writer = null;try {writer = new BufferedWriter(new FileWriter("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt", true));} catch (IOException e) {e.printStackTrace();}try {assert writer != null;writer.write("我是字符缓冲流");writer.flush();writer.close();} catch (IOException e) {e.printStackTrace();}}private static void charReader() {try {BufferedReader reader = new BufferedReader(new FileReader("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt"));char[] chars = new char[1];int len = -1;while ((len = reader.read(chars)) != -1) {System.out.print(new String(chars, 0, len));}} catch (IOException e) {e.printStackTrace();}}
}

2、打印流:

  • 字节输出打印流 PrintStream
  • 字符输出打印流 PrintWriter

代码演示:

public class Test8 {public static void main(String[] args) {bytePrint();charPrint();}private static void charPrint() {try {Writer writer = new FileWriter("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");// 加缓存BufferedWriter bufferedWriter = new BufferedWriter(writer);// 增强打印PrintWriter printWriter = new PrintWriter(bufferedWriter);printWriter.print("我是字符打印流");printWriter.close();} catch (IOException e) {e.printStackTrace();}}private static void bytePrint() {try {OutputStream out = new FileOutputStream("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");// 加缓存BufferedOutputStream writer = new BufferedOutputStream(out);// 增强打印PrintStream printStream = new PrintStream(writer);printStream.print("我是字节打印流");printStream.close();} catch (FileNotFoundException e) {e.printStackTrace();}}
}

缓冲流与打印流(字节与字符)相关推荐

  1. Java——I/O(字符编码、内存流、打印流、System、输入流、序列化)

    目录 1.常见的编码 2.乱码产生原因 3.内存流 3.1 分类 3.2应用 4.打印流 4.1 自定义打印流 4.2 系统提供的打印流 4.3 格式化输出 5.System对I/O的支持 6.两种输 ...

  2. 字节流、字节流、转换流、打印流

    字节流.字节流.转换流.打印流 一. 字符流 概述: 字符流只能操作有文字的文件[纯文本文件], 字符流的操作原理: 字符输入流: 先把字节从文件中读取出来(使用的字节流读的),根据文件的编码集把字节 ...

  3. Java中IO(三、转换流与打印流)

    InputStreamReader是从字节流到字符流的桥梁,它读取字节并使用指定的字符集将其解码为字符,通常将InputStreamReader包装在BufferedReader中使用.PrintSt ...

  4. JAVA IO流(内存流、管道流、打印流)

    1.内存操作流 2.管道流 3.字节.字符转换流 4.字符的编码问题 5.打印流 6.System类对IO的支持 7.对象序列化 内存操作流 FileInputStream 和FileOutputSt ...

  5. 序列化流、打印流、TCP与UDP和其在Java的实现(学习笔记)

    序列化流.打印流.TCP和UDP和其在Java的实现 序列化和反序列化 **序列化流** **反序列化流** **ObjectOutputStream对象** **构造函数:** **特有成员方法:* ...

  6. Java基础(28)数据输入输出流、内存操作流、打印流、随机访问流、序列化与反序列化流、Properties类(集合)

    1. 数据输入输出流 1. 数据输入输出流的概述: (1)以Stream结尾的,一般都是字节流 (2)数据输入流(DataInputStream):数据输入流允许应用程序以与机器无关方式从底层输入流中 ...

  7. 【Java10】lambda表达式(函数式编程),Stream流,File类,字节/字符流,乱码,缓冲/转换/序列化/打印流,Properties

    文章目录 1.lambda表达式标准语法:()->{} 2.lambda表达式简略语法:可推导即可省略 3.lambda表达式原理:lambda效率比匿名内部类高 4.两个函数式接口:Consu ...

  8. 2※、封装流(包装流派)、缓冲流【字节缓冲流、字符缓冲流】-->【字节缓冲流、字符缓冲流】 、字符集、转换流以及打印流

    封装流(包装流) ※缓冲流 [字节缓冲流.字符缓冲流] 缓冲流[字节流]文件复制以及BufferedOutputStream的源码查看 缓冲流[字符流] [读取操作.写出操作] 练习:文本排序:请将文 ...

  9. 缓冲流、转换流、序列化流、打印流

    第一章 缓冲流 缓冲流,也叫高效流,按照数据类型分类: 字节缓冲流:BufferedInputStream,BufferedOutputStream 字符缓冲流:BufferedReader,Buff ...

  10. JavaSE——IO(上)(File、字节流、字符流、转换流、打印流、缓存流)

    第3节 IO(上) 一.File类与文件基本操作 在程序中经常需要用到文件的操作,Java有专门的类来进行文件的操作--File类. 1.1 File类概述 它是对文件和目录路径名的抽象表示. 即它本 ...

最新文章

  1. 英伟达再出GAN神作!多层次特征的风格迁移人脸生成器
  2. py导入包异常跳出_Python运行Unittest作为包导入错误
  3. python算法与数据结构-希尔排序算法(35)
  4. APP上架证书无效:解决
  5. NGUI如何创建自己的精灵图集
  6. 考驾照重点科目的关键考试技巧
  7. YouTube-DNN优化原理推导
  8. linux上soul网关开通,soul 网关入门篇(一):搭建篇
  9. 【图像处理】参数维纳滤波(Parametric Wiener Filter)
  10. 深度学习:概述和一孔之见 浅谈深度学习中潜藏的稀疏表达
  11. Python 交通仿真建模(1)
  12. 从技术新趋势到云原生应用开发,云计算下一个十年将走向何方
  13. 计算机与英语相关工作,计算机行业岗位英语单词整合
  14. 算法导论-动态规划(钢条切割问题)
  15. 恢复突然消失的Chrome浏览器书签
  16. QMC5883L与msp430FG4618--IIC通信
  17. Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)
  18. 【07月16日】A股滚动市净率PB历史新低排名
  19. 使用selenium爬取网页
  20. STM32之HAL库详解 及 手动移植

热门文章

  1. can't resolve symbol 'R' ...
  2. 了解轻量级的移动开发Javascript类库- Zepto.js
  3. do while 执行1次
  4. Netty之大名鼎鼎的EventLoop
  5. 我自己对于Netty的疑问
  6. java中用socket实现简单的单工通信
  7. MyCat分片规则之字符串hash解析算法分片
  8. JMX实现远程服务器Tomcat系统监控之一
  9. 暑期实习面试——超对称,算法实习生
  10. java中class.forName和classLoader加载类的区分