iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C# 使用 Filestream 修改大文件指定位置数据
  • 950
分享到

C# 使用 Filestream 修改大文件指定位置数据

2024-04-02 19:04:59 950人浏览 薄情痞子
摘要

目录前言操作步骤前言 C# 中读写文件常规流程 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, Fil

前言

C# 中读写文件常规流程

FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
//读
StreamReader sr=new StreamReader(fs);
string line=sr.readLine();

//写
StreamWriter s = new StreamWriter(fs);
s.WriteLine("xxx");

至于修改内容 网上大多数是先把文件所有内容读进内存,再把内容修改后写入文件,这样对于小文件没有问题,但是对于大文件就不可行了;

操作步骤

  • 我们首先写一个函数来读取一行数据
   /// <summary>
   /// 在文件流当前位置开始读取改行的内容 返回改行的长度
   /// </summary>  
   private long readRow(FileStream fs20O)
   {
            long len = 0;

            byte[] b = new byte[1];

            bool exit = false;

            while (true)
            {
                if (fs20O.Read(b, 0, 1) == -1) break;

                len++;
                string str = Encoding.UTF8.GetString(b);
                Console.Write(str);
                if ("\n".Equals(str))
                {
                    return len;
                }
            }

            return len;
     }

然后有人会问了,为啥我不用 StreamReader.readLine()来读取一行呢?

由于接下来需要修改当前行的内容,读取完当前行并确定需要修改的时候,需要把流的位置移动至行首,根据上面函数得到读取的长度,使用代码

 fs.Seek(-len, SeekOrigin.Current);

如果用len=StreamReader.readLine(),再移动指针,你会发现流的位置会在更后面而不是偏移了len,不知道readLine是不是会预读取,导致你觉得他只读取了一行,实际他把流的指针移到后几行了并且缓存了数据,再做偏移的时候 结果就不对了 这就是为什么要用上面的方法读取了;

  • 好了,接下来遍历读取文件内容
long len=0;
while((len=readRow(fs)!=-1)
{
    //......
    //修改内容
    //文件指针移动至行首
    if(true)
    {
        fs.Seek(-len, SeekOrigin.Current);
        byte[] readWriteByte = Encoding.UTF8.GetBytes("Test");
        //会直接把原来内容替换
        fs.Write(readWriteByte, 0, readWriteByte.Length);
        //***继续往下读取 直到行尾 把指针移到下一行行首
        readRow(fs);

        //修改完成直接跳出循环,保存文件
        break;
    }
}

到此这篇关于C# 使用 Filestream 修改大文件指定位置数据的文章就介绍到这了,更多相关C# Filestream 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C# 使用 Filestream 修改大文件指定位置数据

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

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

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

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

下载Word文档
猜你喜欢
  • C# 使用 Filestream 修改大文件指定位置数据
    目录前言操作步骤前言 C# 中读写文件常规流程 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, Fil...
    99+
    2024-04-02
  • 如何修改Apache配置指定php配置文件php.ini的位置
    这篇文章主要介绍了如何修改Apache配置指定php配置文件php.ini的位置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一般Apache安装php后,php配置文件默认...
    99+
    2023-06-09
  • 数据库中如何修改数据文件的位置
    这篇文章主要为大家展示了“数据库中如何修改数据文件的位置”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“数据库中如何修改数据文件的位置”这篇文章吧。【1】查看数据...
    99+
    2024-04-02
  • sqlserver数据文件存放位置怎么修改
    要修改SQL Server数据文件的存放位置,可以按照以下步骤操作: 打开SQL Server Management Studio...
    99+
    2024-04-09
    sqlserver
  • 如何修改idea配置文件位置从C盘更改到D盘
    本文介绍如何将idea的配置文件从默认的C盘调整到D盘,从而节省C盘使用空间。 默认存放位置 idea配置文件默认存放位置(XXX为用户名): 用户配置:C:\Users\XXX\AppData\Local\JetBrains 系统...
    99+
    2023-09-05
    idea 配置文件 java Powered by 金山文档
  • docker安裝mysql(8.0.20)并且指定配置文件和数据存放位置
    1、拉取镜像 docker pull mysql:8.0.20 2、创建挂载使用到的目录 mkdir -vp /usr/local/docker/myMysqlcd /usr/local/docker...
    99+
    2023-10-05
    mysql docker 数据库
  • 使用find命令快速定位配置文件位置
    大家知道在配置的时候咱们经常需要修改配置文件,甚至现在的开发就是配配配,记又记不住,每次自己查找太费时间,最近学会了一个命令-find,现在分享以下,当然他能做的不止于此接下来以nginx为例子,那么问题来了nginx中...
    99+
    2022-12-08
    find命令定位配置文件位置 find命令定位文件位置 find命令查找文件
  • 使用R语言怎么获取指定位置的数据
    这期内容当中小编将会给大家带来有关使用R语言怎么获取指定位置的数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。R语言-获取指定位置的数据R中采用数据对象+[ , ]的方式获取对应位置的数据,根据填入索引...
    99+
    2023-06-14
  • MySQL中怎么更改数据文件目录位置
    这期内容当中小编将会给大家带来有关MySQL中怎么更改数据文件目录位置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1、停止mysqld servi...
    99+
    2024-04-02
  • SQL Server中怎么修改数据库物理文件的存储位置
    本篇文章为大家展示了SQL Server中怎么修改数据库物理文件的存储位置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。具体流程为:1、将现有的数据库脱机ALTER...
    99+
    2024-04-02
  • 如何用php修改txt文件的指定内容
    本文小编为大家详细介绍“如何用php修改txt文件的指定内容”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何用php修改txt文件的指定内容”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。步骤1: 打开文本文件...
    99+
    2023-07-05
  • 怎么使用log4j2自定义配置文件位置和文件名
    本篇内容主要讲解“怎么使用log4j2自定义配置文件位置和文件名”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用log4j2自定义配置文件位置和文件名”吧!log4j2自定义配置文件位置和...
    99+
    2023-06-22
  • 如何使用批处理实现全盘搜索指定文件并拷贝到指定位置
    小编给大家分享一下如何使用批处理实现全盘搜索指定文件并拷贝到指定位置,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!代码如下:@echo off&setlocal enabledelayedexp...
    99+
    2023-06-08
  • 使用C#怎么修改文件的创建和修改时间
    本篇文章为大家展示了使用C#怎么修改文件的创建和修改时间,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。File 类命名空间:System.IO程序集:System.IO.FileSystem.dll...
    99+
    2023-06-14
  • Oracle更改表空间中数据文件位置的案例
    这篇文章主要介绍了Oracle更改表空间中数据文件位置的案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。表空间概述Oracle的表空间属于...
    99+
    2024-04-02
  • 如何使用VBS修改二进制文件HEX数据
    这篇文章给大家分享的是有关如何使用VBS修改二进制文件HEX数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。可用之处还是有的,如:隐藏快捷方式中目标文件位置;破解XP中TCP/IP连接数限制;去掉RAR右键解压...
    99+
    2023-06-08
  • 详解怎么用php修改txt文件的指定内容?
    PHP是一种非常流行的网络编程语言,用于开发Web应用程序,其中包含读取,写入和修改本地文本文件。在这篇文章中,我们将要讨论的是如何使用PHP修改指定文本文件的内容。以下是几个步骤:步骤1: 打开文本文件PHP中打开文本文件使用函数fope...
    99+
    2023-05-14
    php
  • python使用matplotlib画图时在指定位置加上文字
    使用plt.text()。该函数的语法如下: plt.text(x, y, s, fontdict=None, withdash=False, **kwargs) 参数说明: x 和 y:表示文本注释...
    99+
    2023-09-05
    matplotlib python 开发语言
  • Fedora10 repo文件交大的源如何修改使用
    小编给大家分享一下Fedora10 repo文件交大的源如何修改使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Fedora更新了很多版本更新,我本人认为Fed...
    99+
    2023-06-16
  • C#使用文件流FileStream和内存流MemoryStream操作底层字节数组byte[]
    一、Stream类概述 在.NET Framework中,文件和流是有区别的。 文件是存储在磁盘上的数据集,它具有名称和相应的路径。当打开一个文件并对其进行读/写时,该文件就称为流(...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作