【问题标题】:Storage devices, file transfer and copy operation logic存储设备、文件传输和复制操作逻辑
【发布时间】:2011-06-11 17:39:24
【问题描述】:

我正在尝试创建一个文件复制实用程序,它应该可以替代标准 Windows 文件复制过程。这样做的主要原因是添加复制/移动队列支持,并希望通过仅在文件传输不涉及相同目标物理介质时启用多个文件传输来进行某种优化(您知道当有使用相同的目标媒体进行多次传输?)

我想澄清一下,我几乎没有实际的编程经验。我打算在项目中使用 C#/.net。

本质上,我打算创建与 teracopy 功能相似的东西(如果性能提升不同)。

以下是我需要专家建议的几件事:

文件复制/移动速度如何取决于存储介质(硬盘、闪存驱动器等)?

从一个硬盘到另一个硬盘的读/写速度。(例如,将文件从硬盘 A 复制到 B,从 A 复制到 A)。

如果同时执行,什么样的同步复制/移动操作不会相互显着影响(我不考虑处理器或设备控制器的负载......我应该这样做吗? em>)?

我承认我可能对这些问题并不十分清楚,所以如果您需要更多详细信息以便能够提供答案,请告诉我。

谢谢。

【问题讨论】:

    标签: c# io hard-drive


    【解决方案1】:

    我认为您可以通过外部调用使用部分 Win Api 在 C# 中完成这样的事情。或者也许已经有一个我不知道的接口(因为我对 C# 比较陌生,只使用了 2 个月)。然而,就我个人而言,如果我想要性能,我会在 C/C++ 中使用 Windows Api 来做这样的事情,如果我想要一些好的功能和跨平台兼容性,我会使用 Python .尝试找到一些提供跨平台兼容性的库,并在标准 win api 函数之上添加一层。

    此链接可能会有所帮助: http://msdn.microsoft.com/en-us/library/cc148994.aspx

    另外,如果您不太担心跨平台兼容性有一个快捷方式,您可以尝试使用 OS 特定 命令,例如 Batch如果您使用非常简单的窗口, 例如,如果您想将名为 foo 的文件从 C:\ 复制到 D:\,只需执行 "Copy C:\Foo.txt D:\Foo.txt" 你就完成了,你不必担心 USB 驱动器或硬盘,你只需要知道要复制到的目录。您可以使用 C/C++ 中的“system()”函数访问这些命令,我​​不知道 C Sharp 等价物。

    【讨论】:

    • 谢谢,但我仍然需要知道哪些同时操作不会影响传输速度。
    • 坦率地说,我不知道。您可以使用基准来找出答案,但大多数都不可靠。
    猜你喜欢
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    相关资源
    最近更新 更多