广告
返回顶部
首页 > 资讯 > 后端开发 > Python >3-9 读写缓存流 ——Buffered
  • 414
分享到

3-9 读写缓存流 ——Buffered

缓存Buffered 2023-01-31 05:01:29 414人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

3-5-3  读写缓存流 ——BufferedStream类 类BufferedStream就是给另一流上的读写操作添加一个缓冲区。缓冲区是内存中的字节块,用于缓存数据,从而减少对操作系统的调用次数。因此,缓冲区可提高读取和写入性

3-5-3  读写缓存流 ——BufferedStream类

类BufferedStream就是给另一流上的读写操作添加一个缓冲区。缓冲区是内存中的字节块,用于缓存数据,从而减少对操作系统的调用次数。因此,缓冲区可提高读取和写入性能。使用缓冲区可进行读取或写入,但不能同时进行这两种操作。BufferedStream 的Read和Write方法自动维护缓冲区的读写过程。
BufferedStream可写在某些类型的流周围。它提供从基础数据源或储存库读取字节以及将字节写入基础数据源或储存库的实现。使用BinaryReader和BinaryWriter读取和写入其他数据类型。BufferedStream用于在不需要缓冲区时防止缓冲区降低输入和输出速度。如果您读取和写入的大小始终大于内部缓冲区的大小,那么BufferedStream可能甚至无法分配内部缓冲区。
BufferedStream也在共享缓冲区中缓冲读取和写入。假设您几乎始终执行一系列读取或写入操作,而很少在读取和写入之间切换。类BufferedStream的构造函数有2种重载,如表3-17所示:
表3-17 类BufferedStream的常用构造函数

名称

说明

BufferedStream (Stream)

使用默认的缓冲区大小 4096 字节初始化 BufferedStream 类的新实例。

BufferedStream (Stream, Int32)

使用指定的缓冲区大小初始化 BufferedStream 类的新实例。

    3-5-4  BufferedStream类案例学习

1. 案例学习:通过缓冲区交换数据

本案例您将学习到:如何通过使用缓存流的来读写文件。
u 实验步骤(1):

由图3-15所示,从工具箱之中拖拽一个GroupBox,text属性设置为“打开文件”;拖拽二个Label控件到GroupBox上,text属性分别设置为“请选择源文件名:”、“请填写备份文件名:”;拖拽二个TextBox控件到GroupBox上,其中第一TextBox控件的Enabled属性为false;拖拽二个Button控件到GroupBox上,text属性分别设置为“打开文件”、“备份文件”。

图3-15  通过缓冲区交换数据界面图
u 实验步骤(2):

用鼠标双击所有Button控件,进入.cs文件编辑状态准备进行开发。代码加下:
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.windows.FORMs;

using System.IO;

 

namespace FileOptionApplication

{

    public partial class Form16 : Form

    {

        public Form16()

        {

            InitializeComponent();

        }

        /// <summary>

        /// 打开原始文件

        /// </summary>

        private void button1_Click(object sender, EventArgs e)

        {

            OpenFileDialog openfile = new OpenFileDialog();

            openfile.Filter = "文本文件(*.txt)|*.txt";

            if (openfile.ShowDialog() == DialogResult.OK)

            {

                textBox1.Text = openfile.FileName.ToString();

            }

        }

        /// <summary>

        /// 备份目标文件;Stream 和 BufferedStream 的实例

        /// </summary>

        private void button2_Click(object sender, EventArgs e)

        {

            string targetpath = @"c:\" + textBox2.Text + ".txt";

            FileStream fs =File.Create(targetpath);

            fs.Dispose();

            fs.Close();

            string sourcepath = textBox1.Text;

            Stream outputStream= File.OpenWrite(targetpath);

            Stream inputStream = File.OpenRead(sourcepath);

            BufferedStream bufferedInput = new BufferedStream(inputStream);

            BufferedStream bufferedOutput = new BufferedStream(outputStream);

            byte[] buffer = new Byte[4096];

            int bytesRead;

            while ((bytesRead =bufferedInput.Read(buffer, 0,4096)) > 0)

            {

                bufferedOutput.Write(buffer, 0, bytesRead);

            }

            //通过缓冲区进行读写

            MessageBox.Show("给定备份的文件已创建", "提示");

            bufferedOutput.Flush();

            bufferedInput.Close();

            bufferedOutput.Close();

            //刷新并关闭 BufferStream

        }

    }

}

3-6  本章小结

n File是静态对象,提供对文件的创建、拷贝、移动和删除等一系列操作。

n File.Create(文件名)可以创建新的文件,并结合FileStream对象来进行读写操作。

n FileStream 和BinaryReader、BinaryWriter对象结合起来可对二进制数据进行操作。

n在C#中指明文件名的时候,要使用转义字符“\\”。

n 内存流提供无法调整大小的数据流视图,而且只能向其写入。

n BufferedStream对象对缓冲区进行读写。

 

 

课 后 练 习

1、FileInfo类和File类的设计差别是什么?

2、文本文件操作和图像文件的操作在本质上有何差异?

3、在一个winform窗体之中建立一个菜单,命名为“文件夹”,其子菜单包括“创建文件夹”,“删除文件夹”,“移动文件夹”,通过点击这三个文件夹分别实现在“C:\”下面相应的功能。

4、在本章课后练习3的基础上,再创建一个菜单,命名为“文件”,其子菜单包括“创建文本文件”,“删除文本文件”,分别创建和删除练习3文件夹中的相关文本文件。

5、模拟WINDOWS操作系统,完整开发一个文本文件编辑器软件。

--结束END--

本文标题: 3-9 读写缓存流 ——Buffered

本文链接: https://www.lsjlt.com/news/188077.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 3-9 读写缓存流 ——Buffered
    3-5-3  读写缓存流 ——BufferedStream类 类BufferedStream就是给另一流上的读写操作添加一个缓冲区。缓冲区是内存中的字节块,用于缓存数据,从而减少对操作系统的调用次数。因此,缓冲区可提高读取和写入性...
    99+
    2023-01-31
    缓存 Buffered
  • 3-8 读写内存流
    3-5  读写内存流 u本节学习目标: n了解读写内存流MemoryStream的特点 n学习如何建立内存流MemoryStream n了解读写缓存流BufferedStream n学习如何...
    99+
    2023-01-31
    内存
  • Java怎么利用缓冲流读写文件
    这篇文章主要介绍“Java怎么利用缓冲流读写文件”,在日常操作中,相信很多人在Java怎么利用缓冲流读写文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎么利用缓冲流读写文件”的疑惑有所帮助!接下来...
    99+
    2023-06-20
  • Java 如何利用缓冲流读写文件
    利用缓冲流读写文件 从控制台读取数据写入文件 读取文件输出到控制台 public class BookTest { public static void main(String...
    99+
    2022-11-12
  • Windows如何开启磁盘写入缓存加快读写速度
    小编给大家分享一下Windows如何开启磁盘写入缓存加快读写速度,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、右键点击开始菜单,在弹出的菜单中选择“设备管理器...
    99+
    2023-06-28
  • Centos7中怎么优化磁盘缓存读写速度
    今天小编给大家分享一下Centos7中怎么优化磁盘缓存读写速度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Linux中的/...
    99+
    2023-06-27
  • Centos7利用内存优化磁盘缓存读写速度的方法
    linux中的/dev/shm目录不属于磁盘,而是内存,如果使用/dev/shm/目录作为Linux中的磁盘文件读写缓存,可想效率是非常惊人的。 默认/dev/shm目录没有挂载,需要手动进行挂载。 在以下文件尾端添加以...
    99+
    2022-06-04
    Centos7 磁盘缓存读写 Centos7 优化磁盘读写速度
  • Redis三种常用的缓存读写策略步骤详解
    目录一、Redis三种常用的缓存读写策略二、旁路缓存模式(Cache Aside Pattern)读写步骤写:读:自我思考缺点三、读写穿透(Read/Write Through Pa...
    99+
    2022-11-13
  • java利用缓冲区及流式对大文件进行高效读写
    当处理大文件时,使用适当的技术和方法可以提高读写性能和效率。下面是一些针对大文件读写的示例说明: 字符流缓冲区及分块读写  BufferedInputStream 和 BufferedOutputStream 大文件读取: try (F...
    99+
    2023-09-14
    java 数学建模 开发语言
  • 如何优化PHP开发中的数据缓存和读写性能
    在PHP开发中,数据缓存和读写性能是一个非常重要的问题。合理地使用数据缓存可以大大提高系统的响应速度和性能。本文将介绍一些优化PHP开发中数据缓存和读写性能的方法,并提供具体的代码示例。一、选择合适的缓存方式文件缓存:将数据以文件的形式存储...
    99+
    2023-10-21
    缓存优化 PHP开发优化 数据读写性能
  • Python 文件缓存对象的秘密:如何优化读写操作?
    在Python中,文件缓存对象是一个非常常用的工具。它可以帮助我们在读写文件时提高效率,降低I/O操作的次数,从而减少程序运行时间。但是,如果使用不当,文件缓存对象也会对程序的性能产生负面影响。本文将介绍Python文件缓存对象的原理、使...
    99+
    2023-07-11
    文件 缓存 对象
  • PHP异步协程开发:加速数据缓存与读写操作
    PHP异步协程开发:加速数据缓存与读写操作在实际应用开发中,数据缓存和读写操作是常见的性能瓶颈。为了提高系统效率和用户体验,可以采用PHP异步协程技术来加速这些操作。本文将介绍PHP异步协程的基本概念和原理,并提供具体代码示例。一、异步协程...
    99+
    2023-12-18
    缓存 异步 协程
  • PHP中使用Memcache缓存技术提高数据库的读写性能
    随着现代互联网的极速发展,越来越多的企业和开发者都面临着对系统性能的追求。性能优化早已成为IT从业者们的必备技能之一,而缓存技术就是提高系统性能的关键因素之一。在许多应用程序中,数据库是最常用的持久性存储介质,因此,在优化系统性能的过程中,...
    99+
    2023-05-16
    PHP Memcache 缓存技术
  • Python缓存技术是否可以有效地应对大数据存储中的读写问题?
    在大数据存储和处理的应用场景中,数据读写是非常频繁的操作。这些操作需要耗费大量的时间和计算资源,因此缓存技术成为了解决大数据读写问题的一个重要手段。Python作为一门流行的编程语言,也提供了多种缓存技术来优化数据读写性能。本文将介绍Py...
    99+
    2023-10-21
    缓存 大数据 存储
  • PHP中怎么使用Memcache缓存技术提高数据库的读写性能
    这篇文章主要介绍“PHP中怎么使用Memcache缓存技术提高数据库的读写性能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP中怎么使用Memcache缓存技术提高数据库的读写性能”文章能帮助大...
    99+
    2023-07-06
  • Python中如何实现一个线程安全的并发缓存对象,保证读写一致性和数据安全性
    Python中如何实现一个线程安全的并发缓存对象,保证读写一致性和数据安全性在多线程的环境下,对共享数据进行读写操作需要考虑到线程安全的问题。当多个线程同时对一个缓存对象进行读写操作时,可能会导致数据不一致或者数据丢失的问题。为了解决这个问...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作