替换文件中的一行而不重写整个文件(在 PHP 中)

2023-12-25

假设我有一个大小适中的文本文件(~850kb,10,000 多行)

我想替换文件中分布的特定行(或几行)。

当前执行此操作的方法包括重写整个文件。我当前使用的方法是逐行读取整个文件,写入 .tmp 文件,完成后,我将 tmp 文件重命名()为原始源文件。

它有效,但速度很慢。当然,随着文件的增长,执行时间也会增长。

是否有另一种方法(使用 PHP)来完成工作,而不必每次需要替换或删除一两行时重写整个文件?

谢谢!我环顾四周,在 stackoverflow 上找不到这个问题的答案。


如果替换的尺寸与原始线的尺寸完全相同,那么您可以简单地fwrite()在文件中的那个位置,一切都很好。但如果它的长度不同(更短OR更长),您将必须重写替换后的文件部分。

这是没有办法解决的。较短的“新”行将在文件中留下间隙,较长的“新”行将覆盖下一行的第一部分。

基本上,您是在问是否可以在另一块木板的中间插入一块木头,而无需移动原始木板。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换文件中的一行而不重写整个文件(在 PHP 中) 的相关文章

  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • 在服务器上找不到本地主机或 phpMyAdmin:如何修复?

    我按照安装说明进行操作PHP MySQL and PHPMyAdmin 但是当我尝试访问时http localhost phpmyadmin 我收到此错误 未找到 在此找不到请求的 URL phpmyadmin 服务器 然后我尝试访问loc
  • PHP MongoDb 驱动程序:如何设置执行代码的超时

    我有以下代码 它在 MongoDb 端执行一段代码 mongoCode new MongoCode Some JS code db gt execute mongoCode array socketTimeoutMS gt 1000000
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • 如何在 PHP 的 HTML 页面中显示错误消息?

    我有以下登录表单 login php 其中要求输入用户名和密码
  • 将 cookie 设置为在当天结束时过期

    我想设置一个 cookie 并让它在一天结束时过期 这有效 但 24 小时后过期 setcookie route upgrade voted true time 86400 这不起作用 setcookie route upgrade vot
  • 覆盖 FOS 用户包中的“更改密码”模板

    我做了一些研究 遗憾的是找不到任何帮助 因此 我将 FOSUserBundle ChangePasswordAction 渲染到我的模板中 但它显示供应商提供的默认模板 我的渲染控制器的模板 block body h2 Einstellun
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • PHP 编码风格回归;在开关/外壳中

    我们正在尝试为我们的团队实施新的编码风格指南 当未找到 break 时 php codeniffer 会在 switch case 语句上打印警告 如下所示 switch foo case 1 return 1 case 2 return
  • 如何使用更新资源控制器 laravel 4?

    我有带有索引 编辑 更新方法的客户控制器 Route resource customer CustomerController 控制器方法更新 public function update id echo id 我的 HTML 表单
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • 字符串相似度的算法(比Levenshtein和similar_text更好)? php, Js

    在哪里可以找到比 levenshtein 和 phpimilar text 方法更准确地评估错误字符的拼写的算法 Example similar text jonas xxjon similar echo similar returns 6
  • PHP 中的 -> 和 :: 有什么区别?

    这个东西困扰我好久了 一直找不到 在 php 中使用 和 gt 之间的类有什么区别 让我举个例子 想象一个名为 MyClass 的类 该类中有一个函数 myFunction 使用有什么区别 MyClass myclass new MyCla
  • session_start():无法解码会话对象

    我有时在使用 CodeIgniter 时遇到以下问题 错误 2019 03 05 19 57 26 gt 严重性 警告 gt session start 无法解码会话对象 会话已被销毁 system libraries Session Se
  • 在本地 SDK 服务器上工作时,实时 Google App Engine 上出现 404

    我已经在GAE标准环境上部署了几个PHP应用程序 一切正常 现在我正在部署一个新应用程序 该应用程序位于由gcloudSDK按预期工作 终端命令 dev appserver py log level warning app yaml 问题是
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ

随机推荐

  • 导入样式表中的 XSLT 样式表参数

    是否可以为导入的样式表的参数赋值 我期待类似的事情
  • 如何使用 Perl 且仅使用 LWP::UserAgent 更新我的 Twitter 状态?

    我正在尝试通过 Twitter API 和 OAuth 更新我的状态 我陷入了最后一步 即状态更新 这是我的代码 标题 ua gt default header Content Type gt application x www form
  • 堆叠两个 pandas 数据框

    如何堆叠以下 2 个数据框 df1 hzdept r hzdepb r sandtotal r 0 0 114 0 1 114 152 92 1 df2 hzdept r hzdepb r sandtotal r 0 0 23 83 5 1
  • pandas 中按列随机排列行

    我有以下数据框示例 c1 c2 0 1 a 1 2 b 2 3 c 3 4 d 4 5 e 给定一个模板c1 3 2 5 4 1 我想根据新的列顺序更改行的顺序c1 所以它看起来像 c1 c2 0 3 c 1 2 b 2 5 e 3 4 d
  • 如何判断文件是否已完成 FTP 传输?

    我们有一个 C Windows 服务轮询一个文件夹 等待 FTP 文件被发布 为了避免在文件仍在写入时使用该文件 我们首先尝试锁定该文件 但是 似乎有有时我们会在创建 FTP 文件之后但在写入文件之前锁定文件 因此我们最终会打开一个空文件
  • 在 GEKKO 中使用非线性模型预测控制实现横向控制器

    我正在尝试为由横向动态模型定义的自动驾驶车辆实现横向控制器 好吧 我的问题是 CV 没有达到 SP 设置的所需参考点或目标点 我正在使用以下运动方程和目标函数 我正在使用半经验公式 pacejka 来计算 Fyf Fyr 提供的轮胎力 这里
  • 对于 DataGridView,如何获取每一行的值?

    我想知道迭代 datagridview 中的所有行并从单元格中获取值的最佳方法是什么 这是我想做的 但我不太喜欢它 因为如果我重新排列列 那么代码也必须更改 for int i 0 i lt dataGridView RowCount i
  • C# EF 5 Code First 中多对多关系的 Lambda 表达式

    我正在使用 EF 5 Code First 和 VS 2012 我有文章和标签课程 每一篇文章都会有至少一个关联的标签 请参阅下面的课程 public class Article public int ArticleId get set p
  • 使用 C# 以编程方式更新 MS Access 数据库中的链接表

    我有两个 Access 2003 数据库 fooDb and barDb 里面有四张桌子fooDb链接到表中的barDb 两个问题 如何更新表内容 链接表在fooDb应与表中的内容同步barDb 如何将表重新链接到不同的表barDb usi
  • 在 Ruby on Rails 中生成多对多模型

    有没有办法生成预定义多对多关系的 Rails 模型 我知道如何在事后将其添加到 Active Record 但最好立即在数据库迁移和 Active Record 模型中定义它 请记住 您不需要连接表的 id 因此请确保添加 id gt fa
  • 在 Chartjs 中显示饼图之外的值

    When I hover on pie chart the values are displayed in tooltip However I want to display values outside of pie chart I wa
  • 使用对象数组创建嵌套列表

    我有一组会经常更改的 SQL 数据 我需要定期从中创建一个嵌套的无序列表 我已将 SQL 数据转换为对象数组 但我仍停留在从中创建无序列表的逻辑上 我尝试制作一个递归函数 但我对这些函数的经验还不够 所以 数据包含以下字段 ID Categ
  • 如何使用 spring data mongodb 聚合在组中使用总和和条件

    db test aggregate group id id total sum 1 live sum cond if eq status A then 1 else 0 chat hrs avg subtract end time star
  • R中的前向和后向填充数据帧[重复]

    这个问题在这里已经有答案了 我有一个数据框 其中的数据如下 Col1 Col2 20 NA 25 NA 15 NA NA 10 NA 15 等等 我希望将其重塑如下 Col1 Col2 20 10 25 10 15 10 15 10 15
  • 在 Excel 中,如何以编程方式编辑包含超链接的单元格区域中的地址?

    我有一列包含超链接 我想以编程方式搜索并替换超链接地址 地址本身 而不是要显示的文本 我该怎么做呢 通过修改范围对象的超链接元素的 地址 属性 超链接是一个集合 因此如果您的范围是单个单元格 您将选择第一项 但它允许您轻松循环遍历给定范围或
  • 将所有绘图输出重定向到特定文件

    我想自动重定向all绘制到文件 原因 见下文 有没有一种非 hacky 的方法来实现这一点 缺少这一点 我实际上并不害怕覆盖内置函数 我that绝望的 我能想到的最简单的方法是连接到基本的绘图窗口创建函数并调用pdf 然后连接到绘图完成函数
  • Firebase 如何保护数字数据免遭用户操纵,例如。比赛得分

    我正在使用 Firebase 开发一款多人游戏 每场比赛结束后 玩家得分都会记录在 firebase 中 并且playerTotalScore 字段也会更新为新的总分 我的问题 是否可以仅使用 firebase 安全规则来保护 player
  • 当我们定义柯里化风格的函数时,我们可以声明参数的类型吗?

    如果我定义一个带有元组样式参数的函数 我可以定义参数类型和返回类型 fun hello name String code int String hello 但如果我使用咖喱风格 我只能这样做 fun hello name code hell
  • 删除网页抓取中的换行符

    我正在尝试抓取棒球阵容数据 但只想返回球员姓名 然而 截至目前 它给了我 位置 换行符 名称 换行符 然后是击球方 例如我想要 D Fletcher 但我得到 LF nD Fletcher nR 此外 它还为我提供了页面上的所有玩家 我最好
  • 替换文件中的一行而不重写整个文件(在 PHP 中)

    假设我有一个大小适中的文本文件 850kb 10 000 多行 我想替换文件中分布的特定行 或几行 当前执行此操作的方法包括重写整个文件 我当前使用的方法是逐行读取整个文件 写入 tmp 文件 完成后 我将 tmp 文件重命名 为原始源文件