【问题标题】:C# - Create large files on USB FASTC# - 在 USB FAST 上创建大文件
【发布时间】:2010-11-29 14:46:55
【问题描述】:

当 Xbox 360 主机格式化 1gb USB 设备时,它会在 20 秒内添加 978mb 的数据。我可以看到 USB 上的文件,它们就是那个大小。

当我在 Windows 中复制相同长度的文件时,需要 6 分钟。

可能是因为Windows读/写,而360只写?

有没有办法在具有这种性能的 USB 上创建类似的大文件?当然,这些文件可以是空白的。我的应用程序需要这种写作性能。

我尝试过的大多数 cmd 工具都没有任何明显的性能提升。

【问题讨论】:

    标签: c# file usb size


    【解决方案1】:

    看起来 360 正在为文件分配空间并将 一些 数据写入文件,但否则文件的其余部分将填充原来存在的任何数据(所谓“垃圾数据”)。当您将相同大小的文件复制到驱动器时​​,它会写入全部 978MB,这是一种不同的情况,这就是为什么需要更长的时间。

    【讨论】:

    • 嗯,这是有道理的,因为在十六进制编辑器中查看 Xbox 创建的文件时,我可以在我的 USB 上看到部分旧文件。图片、音乐等
    • 是的,这就是垃圾数据。此外,由于一些驱动程序和操作系统优化,360 可能比 Philip Rieck 提到的 fsutil/contig 工具更快,因为他们知道所有系统都将具有相同(或少数几个)USB 芯片组。
    • 我明白了。您知道我可以创建一个至少比 Windows 更快的系统的好方法吗?
    • 如果你创建一个0字节的文件,然后通过Interop使用这个函数,我想它会做你想做的。 msdn.microsoft.com/en-us/library/aa365544(VS.85).aspx
    • 等等,不,这不对。该功能只能减小文件大小。使用 CreateFile,然后使用 SetFilePointer 设置新大小,最后使用 SetEndOfFile。
    【解决方案2】:

    很可能 360 没有将 978mb 的数据发送到 USB 记忆棒,而是创建了一个大小为 978mb 的空文件 - 您的文件需要更长的时间,因为您不是简单地发送几 KB 来更改文件系统信息,而是实际上向设备发送 978mb 的数据。

    您可以使用 fsutil 或 Sysinternals "contig" 工具在 Windows 上执行类似的操作(创建一个固定大小的空文件):请参阅 Quickly create large file on a windows system? - 试试这个,您会发现它可能需要不到 20 秒(我猜 360 正在发送 一些 数据,并保留更多空间)。请注意,其中一个答案显示了如何使用 windows API 以及 python 脚本来做同样的事情。

    【讨论】:

    • 我试过fsutil,仍然花了大约5分钟来创建978mb的文件。
    • 试试 Sysinternals "Contig" 工具:technet.microsoft.com/en-us/sysinternals/bb897428.aspx
    • 另外,在十六进制编辑器中查看 Xbox 创建的文件时,我可以在我的 USB 上看到部分旧文件。图片、音乐等
    • @Eaton 在我的机器上,Contig 无需时间就可以在本地文件系统上创建一个 50GB 的文件,而在 U 盘上大约需要 7 秒(当时是较旧的)
    • 我使用了这个命令:“contig -n file 68709120”,显示完整的消息大约需要 30 秒。
    【解决方案3】:

    会不会是 360 只是在做一些直接的文件系统头操作?如果空白文件适合您,也许您可​​以尝试一下?

    【讨论】:

    • 我希望能够创建空白文件。问题是,使用我为它制作的 cmd 应用程序和 C# 程序会很慢。我想知道是否有更快的方法。
    【解决方案4】:

    这完全取决于 USB 驱动器的吞吐量。您将需要一个高端 USB,例如:this list

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      相关资源
      最近更新 更多