【发布时间】:2012-10-07 23:04:09
【问题描述】:
您好,我正在从用户的计算机读取文件,然后使用特定的网络凭据将其写入网络共享,这会损坏一小部分文件。 当我在十六进制编辑器中打开文件时,第一行的十六进制是不同的
Header: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
Good File: 50 4b 03 04 14 00 08 00 00 00 37 57 51 41 6f 61
Bad File: 50 4b 03 04 14 00 08 00 00 00 b7 56 51 41 6f 61
0a 和 0b 列的差异存在于整个文件中,
如果我以错误的方式解决这个问题,请务必纠正我,或者如果只是一些小事情会更好。任何帮助深表感谢。我正在使用的代码如下
var fileStream =
new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.None);
var impersonationContext =
new WrapperImpersonationContext("myDomain", "myname", "myPass");
impersonationContext.Enter();
try
{
using (Stream file = File.OpenWrite(destination))
{
fileStream.CopyTo(file);
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
impersonationContext.Leave();
if(fileStream != null)
{
fileStream.Close();
}
}
【问题讨论】:
-
“非常小的百分比”有多小?您是否尝试过不同的网络和/或硬件?这可能是硬件级别的简单写入错误。
-
这发生在大约 725 个文件中的 5 个上,但在多台计算机上重复发生在这 5 个文件上。我会尝试写到不同的网络
-
我同意@driis。对此的一个很好的测试是尝试File.Copy 以查看文件是否损坏。
-
源是字符串吗?源和目的地是什么形式? (我假设源是网络共享,目标是本地驱动器号卷?)
-
source是一个字符串unc路径到文件的本地副本destination是要写入的文件的字符串unc路径
标签: c# hex filestream