我可以使用 file_get_contents() 来比较两个文件吗?

2024-02-16

我想同步两个目录。我用

file_get_contents($source) === file_get_contents($dest)

比较两个文件。这样做有什么问题吗?


我宁愿做这样的事情:

function files_are_equal($a, $b)
{
  // Check if filesize is different
  if(filesize($a) !== filesize($b))
      return false;

  // Check if content is different
  $ah = fopen($a, 'rb');
  $bh = fopen($b, 'rb');

  $result = true;
  while(!feof($ah))
  {
    if(fread($ah, 8192) != fread($bh, 8192))
    {
      $result = false;
      break;
    }
  }

  fclose($ah);
  fclose($bh);

  return $result;
}

这会检查文件大小是否相同,如果相同,则逐步检查文件。

  • 在某些情况下,检查修改时间检查可能是一种快速方法,但除了文件在不同时间被修改之外,它并不能真正告诉您任何信息。它们仍然可能具有相同的内容。
  • 使用 sha1 或 md5 可能是一个好主意,但这需要遍历整个文件来创建该哈希值。如果这个哈希值可以被存储并在以后使用,那么这可能是一个不同的故事,但是是的......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以使用 file_get_contents() 来比较两个文件吗? 的相关文章

随机推荐

  • 命令行无法识别 Node-sass

    我正在尝试设置node sass 遵循CSS Tricks 说明 https css tricks com why npm scripts Node 和 npm 已正确安装 node sass 安装也正常 当我去跑步时node sass o
  • 如何设置对 Azure 应用服务的 FTP 访问?

    我使用 Visual Studio 将我的网站 发布 到 Azure 看起来工作正常 现在我希望能够将文件通过 FTP 传输到此应用程序服务 但是 如何在此应用服务中设置 FTP 凭据 以便可以通过 FTP 进行身份验证 我本来希望在 部署
  • 创建新的 AVD-CPU/ABI 字段显示“未安装系统映像”

    我正在创建一个新的 AVD 我用 ARM CPU 镜像创建了一个 但大约 45 分钟后仍无法启动 所以我删除了它并下载了 Intel x86 Atom 映像 创建 AVD 时 选择 CPU 的字段变为非活动状态 并显示 未为此目标安装系统映
  • Powershell StreamReader - 如何等待新文件可读

    我的脚本通常假设存在一个 txt 文件 其中包含有助于其更好运行的设置 但是 如果该脚本不存在 它会创建一个本地文件来保存这些设置 我意识到这没有逻辑need然后阅读此文件 但我想了解为什么我不能 void System IO File C
  • 使用 Polymer 和 app-route 每次点击时重新加载页面

    我正在使用 app route 和iron pages 以及纸质工具栏来显示我的视图 就我的一个观点来说 main view 显示随机选择的图像 该图像每次加载页面时都会发生变化 每次main view从工具栏中选择后 页面应重新加载 以便
  • 粘性元素不与同级元素一起向上滚动?

    这是我之前问题的延伸 如何使元素具有粘性但可与同级元素一起滚动到其完整 可变 高度 https stackoverflow com questions 75469958 how to make an element sticky but s
  • 为什么 HTTPS 请求会产生 SSL CERTIFICATE_VERIFY_FAILED 错误?

    这是我的Python代码 import requests requests get https google com 这是错误 requests exceptions SSLError HTTPSConnectionPool host go
  • XCTest 的 @testable 幕后发生了什么?

    我知道 testable import MyModule 提供探索非公开成员的能力MyModule来自 test 使用 testTarget 构建 模块MyModuleTests 我的 非测试 模块需要相同的功能 不在生产中 仅在调试模式下
  • TF 错误:没有剩余的更改需要签入

    我们有一个 NAnt 脚本来更新 TFS 中的 预构建 程序集 作为我们的 TeamCity 构建项目之一 该构建由其他构建触发 它执行 TF 签出 移动一些文件 然后执行 TF 签入 相关目标 tf解析为TF exe的路径
  • 识别任意日期字符串[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要能够识别日期字符串 如果我无法区分月份和日期 例如 12 12 10 也没关系 我只需将字符串分
  • 从命令行、Linux 中使用函数执行 python 脚本

    我有一个名为convertImage py的python文件 在文件中我有一个脚本可以根据我的喜好转换图像 整个转换脚本设置在一个名为convertFile fileName 的函数内 现在我的问题是我需要从linux命令行执行这个pyth
  • python - django:为什么我收到此错误:AttributeError:'method_descriptor'对象没有属性'today'?

    我有以下 python 代码 from django db import models from datetime import datetime class Poll models Model question models CharFi
  • ASP.NET 随机丢失会话值

    我已经为此寻找答案很长一段时间了 因为它继续困扰着我 我们在会话状态 InProc 中存储用户登录信息和有关用户当前活动的其他数据 我经常在尝试使用会话变量之一时遇到空引用异常 它发生在随机页面上 具有随机会话变量 我修改了 web con
  • 单个页面上有多个 FullCalendars

    我想在同一页面上添加多个 FullCalendars 可选 用于安排不同类型的事件并将信息保存在数据库中 但查看演示 示例代码 似乎我只能在每页添加单个日历 因为它是由 div div 您能否告诉我是否有办法实现此目的 以便当用户在同一页面
  • rvest::html_text 和 RSelenium::getPageSource 有什么区别?

    我正在抓取一些网页 我注意到 rvest read html 然后 html text 提供的结果与 RSelenium getPageSource 提供的结果不同 更具体地说 当涉及下拉菜单时 使用 html text 只会提供选项的名称
  • 为什么我的 postgres 表在更新后变得更大?

    我有一个表 聚集在两列上 销售点和产品 ID 唯一的索引位于这两列中 并且表聚集在这些列上 我每周都会更新表中的其他列 当我这样做时 表和关系的大小增加了大约 5 倍 然后 我对表进行聚类 大小恢复到更新前的大小 这对我来说似乎很奇怪 如果
  • 根据与 dplyr 的部分匹配替换数据框中任意位置的整个字符串

    我正在努力寻找合适的 dplyr 代码来使用grepl或等效的方法来替换整个数据帧中的值 即 任何包含 mazda 的单元格都应将其全部内容替换为新字符串 A car 经过大量在线搜索后 我最接近的是 重点是将其应用于所有列 library
  • 构建我的项目时 Xcode 10 beta 错误?

    我将 Xcode 更新到 10 beta 之后 当我构建时 我收到以下构建失败错误 访问构建数据库 Users n Library Developer Xcode DerivedData Build Intermediates XCBuil
  • 通过 python SDK 获取 Azure 安全中心警报

    我想使用 python SDK 列出 azure 安全中心警报 我找到了这个包 https pypi org project azure mgmt security https pypi org project azure mgmt sec
  • 我可以使用 file_get_contents() 来比较两个文件吗?

    我想同步两个目录 我用 file get contents source file get contents dest 比较两个文件 这样做有什么问题吗 我宁愿做这样的事情 function files are equal a b Chec