Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can File.writealBytes()可能会失败而不引发异常吗?_C#_Asp.net_.net - Fatal编程技术网

C# Can File.writealBytes()可能会失败而不引发异常吗?

C# Can File.writealBytes()可能会失败而不引发异常吗?,c#,asp.net,.net,C#,Asp.net,.net,我们正在使用System.File.WriteAllBytes方法在我们的一个解决方案中存储文档 在生产环境中,此方法在磁盘中写入了一些0字节的文件。但是,在将文件写入磁盘之前,我们正在记录要写入的文件的大小,这些文件超过0字节。这只发生在一些文件上 我们因此丢失了一些数据 在写入0字节文件而不引发异常后,File.writealBytes是否有可能失败 有人能解释一下原因吗?如果失败,该方法应该抛出异常 但是,请考虑下面的案例 File.WriteAllText(@"d:\temp\test.

我们正在使用System.File.WriteAllBytes方法在我们的一个解决方案中存储文档

在生产环境中,此方法在磁盘中写入了一些0字节的文件。但是,在将文件写入磁盘之前,我们正在记录要写入的文件的大小,这些文件超过0字节。这只发生在一些文件上

我们因此丢失了一些数据

在写入0字节文件而不引发异常后,File.writealBytes是否有可能失败


有人能解释一下原因吗?

如果失败,该方法应该抛出异常

但是,请考虑下面的案例

File.WriteAllText(@"d:\temp\test.txt", "Content");
File.WriteAllBytes(@"d:\temp\test.txt", new byte[0]);
在上面的场景中,第二条语句将0字节写入该文件,并将*文件存储起来,这样磁盘上将有一个0字节的文件。请注意,这不是问题,而是预期的行为,因此请确保用于写入的字节[]不是空的

*aka根据覆盖,这并不意味着覆盖前n个字节,而是覆盖整个文件

其他选项可能是硬件故障。上述语句导致3次磁盘操作,可通过以下方式进行监控:

:创建一个0字节的文件,从而删除现有文件 :将内容写入磁盘
如果在步骤1之后但在步骤2之前发生断电,则文件可能为空。从.NET的角度来看,该操作可能已成功,但从操作系统的角度来看,文件内容仅在写缓存中。

老实说,我们最好能用代码示例进行解释。它应该给出一个例外。我认为你的应用程序中有一个bug。字节从哪里来?写入前如何测量?请共享正在进行写入和/或估计字节数的代码,以便我们可以帮助检查EventViewer,以防当时出现磁盘错误。灾难性故障断电可能会使文件处于比操作系统承诺的更旧的状态,但希望你也能看到这种失败的其他迹象