Java IO字符流缓冲区实现原理解析

字符流的缓冲区

缓冲区的出现,提高了对数据的读写效率,对应的类:BufferedWriter,BufferedReader

缓冲区要结合流才可以使用,缓冲区是在流的基础上对流的功能进行增强

BufferedWriter

将文本写入到字符输出流中,缓冲字符,以便提供对单个字符、数组和字符串的有效写入。

可以指定缓冲区大小,也可以接受默认大小。默认是足够大的用于大多数目的。

提供了一种newline()方法,利用平台自身观念的行分隔符由系统性line.separator定义。并不是所有的平台都使用换行符('\n')。

调用此方法终止各输出线因此宁愿写一个换行符直接。

所有的类用法几乎都很类似,下面直接写案例了。

BufferedReader

从一个字符输入流中读取文本,缓冲字符,以便提供字符、数组和行的有效读取。

可以指定缓冲区大小,也可以使用默认大小。默认是足够大的用于大多数目的。

在一般情况下,每一个读的读者提出的要求导致相应的读请求是由底层字符或字节流。

这个类和BufferedWriter使用方式完全一样就演示几个常用的,下面直接写案例了。

BufferedInputStream, BufferedOutputStream这一对用法也是一模一样的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Java中字符流与字节流的区别

    本文为大家分析了Java中字符流与字节流的区别,供大家参考,具体内容如下 1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可以从中读入一个字节序列的对象被称为输入流:能够向其写入一个字节序列的对象被称为输出流. 2. 字节流 Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据.Java中最基本的两个字节流类是InputStream和Out

  • java 字节流和字符流的区别详解

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图所示. 下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流. 范例:使用字节流不关闭执行 package org.lxh.demo12.byteiodemo; import java.io.File; import java.io.FileOutp

  • java编程中字节流转换成字符流的实现方法

    java编程中字节流转换成字符流的实现方法 import java.io.*; /*readLine方法是字符流BufferReader类中的方法 * 而键盘录入的方法是字节流InputStream的方法 * 那么能不能将字节流转成字符流再使用字符流缓冲区中的readLine方法呢? * * InputStreamReader类是字节流转向字符流的桥梁.(它本身是一个字符流所以在构造时接受一个字节流) * * */ public class TransStreamDemo { public st

  • 详解Java编程中面向字符的输出流

    面向字符的输出流都是类 Writer 的子类,其类层次结构如图所示. 下表列出了 Writer 的主要子类及说明. 使用 FileWriter 类写入文件 FileWriter 类是 Writer 子类 OutputStreamWriter 类的子类,因此 FileWriter 类既可以使用 Writer类的方法也可以使用 OutputStreamWriter 类的方法来创建对象. 在使用 FileWriter 类写入文件时,必须先调用 FileWriter()构造方法创建 FileWriter

  • Java编程中字节流与字符流IO操作示例

     IO流基本概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都是在IO包上 流按操作数据分为两种:字节流和字符流 流按流向分为:输入流,输出流. 字节流的抽象基类:InputStream,OutputStream 字符流的抽象基类:Reader,Writer 注:由这4个类派生出来的子类名称都是以其父类名作为子类名的后缀. 如:InputStream的子类:FileInputStream 如:Reader的子类FileReader 如创建一个F

  • java字符流缓冲区详解

    本文实例为大家分享了java字符流缓冲区的具体方法,供大家参考,具体内容如下 1. 为什么要缓冲区? 程序频繁地操作一个资源(如文件),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域中,以后直接从此区域中读取数据即可,因为读内存速度比较快,这样提高性能.在IO中引入缓冲区,主要是提高流的读写效率. 2. 缓冲技术的原理? 总的来说,缓冲区就是内存里的一块区域,把数据先存内存里,然后一次性写入,类似数据库的批量操作,这样效率比较高 3. BufferedWriter类

  • Java IO流之字符缓冲流实例详解

    字符流: 1.加入字符缓存流,增强读取功能(readLine) 2.更高效的读取数据 BufferedReader 从字符输入流读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取. FileReader:内部使用InputStreamReader,解码过程,byte->char,默认缓存大小为8k BufferReader:默认缓存大小为8k,但可以手动指定缓存大小,把数据读取到缓存中,减少每次转换过程,效率更高 /字符输入缓冲流 private static void charReade

  • 【Java IO流】字节流和字符流的实例讲解

    字节流和字符流 对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流. 1.从对文件的操作来讲,有读和写的操作--也就是输入和输出. 2.从流的流向来讲,有输入和输出之分. 3.从流的内容来讲,有字节和字符之分. 这篇文章先后讲解IO流中的字节流和字符流的输入和输出操作. 一.字节流 1)输入和输出流 首先,字节流要进行读和写,也就是输入和输出,所以它有两个抽象的父类InputStream.OutputStream. InputStream抽象了应用程序读取数据的方式,即

  • Java IO字符流缓冲区实现原理解析

    字符流的缓冲区 缓冲区的出现,提高了对数据的读写效率,对应的类:BufferedWriter,BufferedReader 缓冲区要结合流才可以使用,缓冲区是在流的基础上对流的功能进行增强 BufferedWriter 将文本写入到字符输出流中,缓冲字符,以便提供对单个字符.数组和字符串的有效写入. 可以指定缓冲区大小,也可以接受默认大小.默认是足够大的用于大多数目的. 提供了一种newline()方法,利用平台自身观念的行分隔符由系统性line.separator定义.并不是所有的平台都使用换

  • Java基于字符流形式读写数据的两种实现方法示例

    本文实例讲述了Java基于字符流形式读写数据的两种实现方法.分享给大家供大家参考,具体如下: 第一种方式:逐个字符进行读写操作(代码注释以及详细内容空闲补充) package IODemo; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyFileDemo { /** * @param args * @throws IOException */ p

  • Java多线程并发编程和锁原理解析

    这篇文章主要介绍了Java多线程并发编程和锁原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.前言 最近项目遇到多线程并发的情景(并发抢单&恢复库存并行),代码在正常情况下运行没有什么问题,在高并发压测下会出现:库存超发/总库存与sku库存对不上等各种问题. 在运用了 限流/加锁等方案后,问题得到解决. 加锁方案见下文. 二.乐观锁 & 悲观锁 1.乐观锁 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁

  • Java 8 Stream流强大的原理

    目录 1.Stream的组成与特点 2.BaseStream接口 3.Stream接口 4.关闭流操作 5.并行流和串行流 6.ParallelStream背后的男人:ForkJoinPool 7.用ForkJoinPool的眼光来看ParallelStream 8.并行流的性能 9.NQ模型 10.遇到顺序 前言: Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象. Stream API可以极大提高Java程序员的生产力,让程

  • Java等待唤醒机制线程通信原理解析

    这篇文章主要介绍了Java等待唤醒机制线程通信原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 线程间通信 概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同.比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题. 为什么要处理线程间通信: 多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个

  • Java JDBC导致的反序列化攻击原理解析

    这篇文章主要介绍了Java JDBC导致的反序列化攻击原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景 上周BlackHat Europe 2019的议题<New Exploit Technique In Java Deserialization Attack>中提到了一个通过注入JDBC URL实现反序列化攻击的场景,简单分析一下. 分析 首先,当java应用使用MySQL Connector/J(官方的JDBC驱动,本文基于其

  • Java变量常量声明和定义原理解析

    这篇文章主要介绍了Java变量常量声明和定义原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.常量和变量 1.常量变量定义 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量. 2.变量举例: 在水果分类中,需要有一个水果篮来存放不同的水果,那在运行的过程中,这个水果篮的值会发生变化. 3.常量举例 代表常数,便于程序的修改(

  • java的package和import机制原理解析

    这篇文章主要介绍了java的package和import机制原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在说package.import机制前我们先来了解下java的CLASSPATH. CLASSPATH顾名思义就是class的路径,当我们在系统中运行某个java程序时,它就会告诉系统在这些地方寻找这个class文件 CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar; 这是

随机推荐