缓冲字符流

使用字符流 必须刷新缓冲区 flush 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。 /** * 字符流 使用输入流读取一个文件内容到cpu中,然后使用输出流将内容写出到指定位置的外部文件中。 (使用输入输出流进行了文件的复制 */ @Test void test02() { try { Reader is... 阅读详情
 

缓冲字符流

一.缓冲字符流

1.采用缓冲处理是为了提高效率,如果没有缓存,例如FileReader对象,每次调用read()方法进行读操作时,都会直接去文件中读取字节,转换成字符并返回,这样频繁的读取文件效率很低。

2原理就是将数组进行封装。

3. .缓冲的字符流的出现提高了对流的操作效率,缓冲的存在是为了增强流的功能,因此在建立缓冲的字符流对象时,要先有流对象的存在。

二.字符缓冲输入流BufferedReader类

1.构造方法

 public BufferedReader(Read in):创建一个使用默认大小输入缓冲区的缓冲字符输入流。

Public BufferedReader(Reader in,int sz):创建了一个使用指定大小输入缓冲区的缓冲字符输入流。其中 sz指输入缓冲区的大小,如果sz<=0,则抛出IllegalArgumentException.

2.实例方法

Public String readLine()throws IOException:读取一个文本行。

import java.io.*;

 

 

public class BufferedIODemo2 {

    public static void main(String[] args){

       FileReader fr=null;

       BufferedReader bw=null;

       try {

           fr=new FileReader("res/demo.txt");

           bw=new BufferedReader(fr,255);

          

           String str=null;

           while((str=bw.readLine())!=null){

              System.out.println(str);

           }

       } catch (FileNotFoundException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } catch (IOException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }finally{

           if(bw!=null)

              try {

                  bw.close();

              } catch (IOException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

              }

       }

    }

 

}

 

三.字符缓冲输出流BufferedWriter类

1.构造方法

Public BufferedWriter(writer out):创建一个使用默认大小输出缓冲区的缓冲字符输出流。

Public BufferedWriter(Writer out,int sz):创建一个使用给定大小输出缓冲区的新缓冲字符输出流。其中 sz指输入缓冲区的大小,如果sz<=0,则抛出IllegalArgumentException.

2.实例方法

Public void newLine()throw IOException:写入一个行分隔符,行分隔符字符串由系统属性line.separator定义,而不是单个新行(\n)符。

import java.io.*;

 

 

public class BufferedIODemo {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       FileWriter fw=null;

       BufferedWriter bw=null;

       try {

            fw=new FileWriter("res/" +

                  "demo.txt");

            bw=new BufferedWriter(fw);

            bw.write("hell");

            bw.newLine();

            bw.write("java");

            bw.newLine();

            bw.flush();

       } catch (IOException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } finally{

           if(bw!=null){

              try {

                  bw.close();

              } catch (IOException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

              }

              }  

           }

      

    }

 

}

 

四.装饰设计模式和继承有什么区别?

1.装饰设计模式比继承有更好的灵活性

2. 增加的这些子类都是在使用缓冲技术。可不可以对缓冲技术进行描述,将需要增强的对象传递给缓冲区即可。

3. 出现的新的问题:该类虽然完成对已有两个对象的增强。但是当有新的对象出现时,还要继续在该类中添加构造函数。这样不利于扩展和维护。

4. 解决方法:将对这些对象父类型进行操作即可。这就是多态,提高了程序的扩展性。同时BufferedWriter中一样具体write方法,只不过是增强后的write。所以BuferedWriter也应该是Writer中的一个子类。

 

Java学习笔记6.2.1 字符流 - 文件字符流与缓冲字符流 1. 了解字符流的继承关系情况; 2. 能利用文件字符输入流读文件; 3. 能利用文件字符输出流写文件; 4. 能利用文件字符流拷贝文件 阅读详情

相关推荐

树莓派IgH EtherCAT主站部署与实时内核调优实战

本文详细介绍了在树莓派上部署开源IgH EtherCAT主站并进行实时内核调优的完整实战流程。通过编译实时内核(RT-Preempt)、交叉编译IgH主站、系统集成配置及性能优化,实现了低成本、高定制的工业控制解决方案,有效满足了EtherCAT通信对微秒级实时性的严苛要求。

weixin_29166013的博客 299

IO流

IO流IO流IO字节流FileOutputStreamFileInputStreamIO字符流Reader字符输入流Writer字符输出流Properties缓存流转换流 IO流 输入流:把数据从其他设备上读取到内存中的流 输出流:把数据从内存中写出到其他设备上的流 根据数据内存的不同,可分为字节流和字符流 一切文件都是字节 IO字节流 注意:这里的输入输出都是对内存来说的,输入就是把内容从硬盘中写到内存中,输出就是把内容从内存中写到硬盘中。 OutputStream(字节输出流) OutputStrea

m0_51994031的博客 175

别再对着数据手册发愁了!用HFSS 2023 R2搞定ESP32-C3板载天线的阻抗匹配

本文详细介绍了如何利用HFSS 2023 R2进行ESP32-C3板载天线的阻抗匹配优化,解决实际PCB设计中常见的性能偏差问题。通过智能模型导入、科学参数扫描和量化优化流程,显著提升天线性能,适用于WIFI和蓝牙应用场景。

weixin_42523543的博客 447

【Java】I/O流之字符缓冲流

字符缓冲流和字节缓冲流一样,都是在原有基础上内部封装了一个缓冲区数组,以此提高流的读写速率。

weixin_53972936的博客 1254

从二体运动到高精度轨道:STK与MATLAB联动的轨道外推算法演进史

本文探讨了轨道外推算法从二体运动到高精度轨道预报(HPOP)的演进历程,重点分析了STK与MATLAB协同仿真环境下的技术实现与应用。通过对比不同算法的精度与适用场景,展示了HPOP在卫星参数优化和轨道设计中的优势,为航天任务规划提供了高效解决方案。

weixin_29082143的博客 697

揭秘AI人工智能中Stable Diffusion的模型微调技巧

Stable Diffusion作为一种强大的文本到图像生成模型,在艺术创作、设计、娱乐等多个领域展现出了巨大的应用潜力。然而,其默认的模型输出可能无法满足特定用户或特定场景的个性化需求。本文章的目的在于深入揭秘Stable Diffusion的模型微调技巧,让读者能够根据自己的需求对模型进行定制化调整,生成符合特定风格、主题或要求的图像。范围涵盖了从基础概念到实际操作,从理论原理到项目实战的全方位内容,旨在为读者提供一个系统且深入的学习指南。

大模型应用工坊 948

字符缓冲流

字符缓冲流

m0_66057675的博客 513

把 LangGraph 当“工作流引擎”用:与传统 BPM 的差异与融合策略

首先,我们来回顾一下有限状态机(FSM)的基本定义——一个 FSM 可以用一个五元组MQΣδq0FMQΣδq0​FQQQ有限状态集合,包含 FSM 所有可能的状态;Σ\SigmaΣ有限输入字母表,包含 FSM 所有可能的输入;δ\deltaδ状态转移函数,定义了 FSM 从当前状态q∈Qq \in Qq∈Q接收输入σ∈Σσ∈Σ后,转移到的下一个状态q′∈Qq' \in Qq′∈Q,即δQ×Σ→QδQ×Σ→Q。

AI 原生应用开发的博客 227

【Java】缓冲流(字节缓冲流和字符缓冲流)

字节缓冲流底层自带了长度为8192的缓冲区,利用缓冲区可以一次读取8192个字节,从而提高了效率。在创建对象的时候需要注意,缓冲流是高级流,它是对基本流做了一个包装。缓冲流本身是不能直接读取文件中的数据的,不能直接把数据写到文件中,在创建对象的时候是需要关联基本流的,在底层真正读取数据的,其实还是这两个基本流,只不过有了这两种流的加持,它读写的效率更高而已。字符缓冲流也是自带长度为8193的缓冲区提高读写性能。之前我们已经学习了字符流的基本流,我们知道,基本流本身已经有缓冲区了。所以现在所学习的。

qq_39921135的博客 1868

Android 14.0 系统设置显示主菜单添加屏幕旋转菜单实现旋转屏幕功能

在14.0的系统rom定制化开发中,在对系统设置进行定制开发中,有产品需求要求增加 旋转屏幕功能的菜单,就是在点击旋转屏幕菜单后弹窗显示旋转0度,旋转 90度,旋转180度, 旋转270度针对不同分辨率的无重力感应的大屏设备的屏幕旋转功能的实现, 接下来就来分析实现这个功能

安卓兼职framework和app工程师的博客 1308

DBeaver配置本地mysql-connector驱动文件

本文摘要:介绍了数据库驱动管理的基本操作步骤:1)新建驱动管理器,填写MySQL驱动名称、类名和类型;2)添加本地MySQL驱动文件;3)创建数据库连接并测试。适用于MySQL5.x和8.x版本,帮助用户快速配置数据库连接。

litlit023的专栏 1679

字符流和字节缓冲流

IO流的分类 根据流的流向分类: 输入流:将数据从 其他设备 上读取到 内存 中的流。以 InputStream 、Reader 结尾。 输出流:将数据从 内存 中写出到 其他设备 上的流。以 OutputStream 和 Writer 结尾。 根据数据的类型分类: 字节流:以字节为单位,读写数据的流。以 InputStream 和 OutputStream 结尾。 字符流:以字符为单位,读写数据的流。以 Reader 和 Writer 结尾。 根据 IO 流的角色不同分类:

weixin_66474058的博客 942

时间序列预测 | 决策树时间序列预测建模,单步、多步(Python)

时间序列预测 | 决策树时间序列预测建模,单步、多步(Python)

天天酷科研的博客 743

字节缓冲流&字符流

IO中的字节缓冲流和字符流

ZEZHEN0222的博客 1115

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

字符流缓冲区

字符流缓冲区 【1】缓冲区的出现提高了对数据的读写效率 【2】对应类:BufferedWriter、BufferedReader 【3】缓冲区要结合流才可以使用 【4】在流的基础上对流的功能进行了增强 缓冲区就是为减少频繁的到硬盘读取数据的次数,以消耗内存提高流的读写效率。 (就是在内存创建一个容器,存储数据) 字符写入缓冲区BufferedWriter 注意创建缓冲区之前,必须先...

懒虫翻身的博客 421

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

缓冲的字符流 字节流和字符流

一、复习 1、数据流的基本概念的复习。 2、节点流,处理流,字节流,字符流(只能处理字符数据)。 3、出入/输出流体系。用于实现I/O操作的流类和接口在java.io包中。 二、缓冲的字符流(BufferedReader/ BufferedWriter) 1、采用缓冲处

liujianan 688

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

字符流的缓冲区

一、字符流的缓冲区——BufferedReader和BufferedWriter 1、缓冲区的出现:提高了流的读写效率,所以在缓冲区创建前,要先创建流对象。即先将流对象初始化到构造函数中。  2、缓冲技术原理:此对象中封装了数组,将数据存入,再一次性取出。

宁静致远 782

字符流-缓冲区

在进行文件复制方式二的时候用到了缓冲区,char[] buf = new char[1024];这个就是缓冲区,这个缓冲区是我们自己创建的,使用缓冲区可以提高效率。因为缓冲区可以提高效率,所以Java把缓冲的功能封装起来,称为一个对象。其实缓冲区里面就是封装了一个数组,用来对流所操作的数据进行缓存。缓冲区的出现提高了对数据的读写效率。两个字符流缓冲对象BufferedWriter、Buffe...

pigziprogrammer的专栏 478

Java缓冲字符流

PrintWriter支持自动行刷新,每当我们调用println方法写出一行内容后自动flush一次。缓冲字符输入流内部维护一个默认8192长度的char数组,总是以块读取文本数据保证读取效率。java.io.PrintWriter具有自动行刷新的缓冲字符输出流,实际开发中更常用.缓冲输入流提供了一个。

是程序喵呀 668
上一篇: Java流与文件操作
下一篇: 字节流
日依
博客等级 码龄15年 165粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值