【问题标题】:C++ Write Data to Random HDD SectorC++ 将数据写入随机硬盘扇区
【发布时间】:2014-12-21 00:46:09
【问题描述】:

我需要使用 C++ 编写一个程序,该程序能够对随机和顺序硬盘扇区执行数据写入/读取。

但是,实际上我对sector 一词及其与文件的关系感到困惑。

我想知道的是,如果我只是:

1. Create a string contains word "Hello, world" and then;
2. Save the string into "myfile.txt", 

数据是按顺序写入还是随机写入?如果它是顺序的(我猜),那么如何将字符串写入随机硬盘扇区然后再次读取?反之亦然。

【问题讨论】:

  • 该文件足够小以适合(希望)在单个扇区中...但这不会高度依赖操作系统和驱动程序吗?如在 RAID 0 设置下,连续写入的 2 个扇区最终可能位于不同的磁盘上。
  • 这样做会损坏磁盘。您将使机器无法使用。不要那样做。
  • 你不能。文件位置和扇区之间没有关系。要写入已知扇区,您需要在计算机上拥有特殊权限并使用特定于操作系统的 API。您将在此过程中破坏磁盘上的数据。
  • 真的吗?我没想到这会导致这样的问题。其实这是我的学校作业。也许我需要向我的教授澄清这一点。我不明白给我这个麻烦的任务有什么意义。无论如何,非常感谢您的警告和建议。你真的救了我的 MacBook Pro.. :D
  • @yunhasnawa 如果数据足够大,操作系统会将该数据写入随机扇区。您不必直接写信给他们。

标签: c++ file hard-drive


【解决方案1】:

由于文件系统的原因,您今天尝试做的事情几乎是不可能的。如果你想要一个文件(你似乎想要),你需要一个文件系统。然后,文件系统将数据以它想要的某种格式放置到它认为最好的扇区中。 btrfs 和 zfs 等高级文件系统还可以进行压缩、校验和以及将数据放置在多个硬盘上。所以你不能只写一个扇区,因为你可能会破坏数据并且你不能再读取它,因为你的文件系统不理解你的数据格式。它甚至不知道那里有数据,因为文件必须在 MFT/btrfs 元数据/... 表中注册。

TL;DR 不要尝试这样做,它会弄乱您的系统,并且无法正常工作。

【讨论】:

  • 请注意,如果 OP 的任务是实现文件系统,这并不成立,
猜你喜欢
  • 2011-03-20
  • 2021-09-10
  • 2019-12-05
  • 2011-11-09
  • 2013-07-06
  • 2013-12-08
  • 2013-03-18
  • 2013-07-15
  • 1970-01-01
相关资源
最近更新 更多