我正在重构一些代码,有一个问题我可以使用一些评论。
原始代码将文件下载到流中。然后它将流写入临时目录中的文件,然后使用 File.Copy 覆盖生产目录中的现有文件。
首先将其写入临时目录并使用 File.Copy 与立即将流写入生产目录相比有什么好处吗?
一个原因可能是 File.Copy 比写入流更快,并减少了有人在写入文件时读取文件的机会。但这会发生吗?我还应该记住什么。我正在考虑分解临时目录。
MemoryStream stream = new MemoryStream();
....Download and valiate stream....
using (Stream sourceFileStream = stream)
{
using (FileStream targetFileStream = new FileStream(tempPath, FileMode.CreateNew))
{
const int bufferSize = 8192;
byte[] buffer = new byte[bufferSize];
while (true)
{
int read = sourceFileStream.Read(buffer, 0, bufferSize);
targetFileStream.Write(buffer, 0, read);
if (read == 0)
break;
}
}
}
File.Copy(tempPath, destination, true);
与仅将流写入目标相反。
这只是我的代码,我会正确使用类似的东西sourceFileStream.CopyToAsync(TargetFileStream);