C#/ CopyFile:带有Progress的跨平台代码

时间:2010-05-28 17:43:48

标签: c# .net mono cross-platform pinvoke

请建议我使用C#跨平台解决方案来复制带有进度的文件。 该方法应该能够在.NET上复制Mono上的文件。

P.S。这里的大多数解决方案都是指CopyFileEx(使用PInvoked,我不确定这是否适用于Mono)

3 个答案:

答案 0 :(得分:4)

您可以在文件流之间手动复制,例如MonoDevelop's file deployer中的CopyFile方法,该方法在每1k块之后有一个回调。

它可能比File.Copy慢一点,但如果进度回调是必不可少的,那么你没有太多选择。对于MonoDevelop文件复制器,我们通过FUSE写入本地安装的远程文件系统。

答案 1 :(得分:0)

您是否尝试过File.Copy方法?我没有单声道的经验,但认为它应该工作。您将不得不担心文件路径,这与API不同。

答案 2 :(得分:0)

StreamWriter应该有效:),

通过StreamReader?将数据加载到内存中,并通过StreamWriterBinaryWriter写入。如果你愿意,甚至还有AsyncWrite:)

我有一个在Mono上运行的自定义存档格式,使用上面提到的这些API。对你来说应该没什么不同。