小编Hec*_* S.的帖子

使用机器人复制和处理进行文件复制

我正在创建一个文件复制程序,它将使用ROBOCOPY命令复制大小约为50 KB的大量文件(~100,000).

对于每个文件,我创建一个新进程并传递ROBOCOPY命令和参数如下:

using (Process p = new Process)
{
    p.StartInfo.Arguments = string.Format("/C ROBOCOPY {0} {1} {2}", 
            sourceDir, destinationDir, fileName);
    p.StartInfo.FileName = "CMD.EXE";
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.UseShellExecute = false;                    
    p.Start();
    p.WaitForExit(); 
} 
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更好的方法,而不是为每个文件创建一个流程,这在性能和设计方面都很好.有人可以提出更好的方法吗?

c# windows copy file robocopy

10
推荐指数
3
解决办法
3万
查看次数

C#BinaryReader.ReadChar在读取NetworkStream时抛出“ System.ArgumentException:输出char缓冲区太小”

NetworkStream从流类型的TCP套接字读取C#时,BinaryReader.ReadChar偶尔会引发异常System.ArgumentException: The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)'

所有缓冲区都有其默认大小(没有一个是手动设置的),并且设置更大的缓冲区大小不会影响该问题。

完全令人沮丧的是:

  • 使用断点并逐步通过ReadCharcall 行时,不会发生异常

  • 如果ReadChar先于该异常,则不会发生该异常Thread.Sleep(1000)(但仍会在较小的超时时发生)

  • 使用BinaryReaderon 时不会发生异常FileStream,在该位置存储了TCP服务器答案的所有精确字节。

那么,从套接字流中缓冲单个字符可能是与时间相关的问题?

c# networkstream binaryreader

5
推荐指数
1
解决办法
7962
查看次数

标签 统计

c# ×2

binaryreader ×1

copy ×1

file ×1

networkstream ×1

robocopy ×1

windows ×1