繁体   English   中英

C#可以从不存在的文件中读取?

[英]C# can read from a file that doesn't exist?

我们有一些C#代码,可使用StreamReader从文本文件读取数据。 在一台计算机上,即使该文本文件已被删除或替换为另一个文本文件-File.Exists,我们也可以从该文本文件中读取数据,即使该文件在Windows资源管理器中不存在,该报告也会存在。 但是,在另一台计算机上不会发生此行为。 两台计算机都运行Vista Business和.NET 2.0.50727 SP2。

我们尝试重新启动计算机,但没有解决办法。

是否有人对如何做到这一点以及可能的解决方案有任何了解?

谢谢,艾伦

MSDN

Exists方法不应用于路径验证,该方法仅检查path中指定的文件是否存在。
请注意,在调用Exists方法并对文件执行其他操作(例如Delete)之间,另一个进程可能会对文件执行某些操作。 推荐的编程做法是将Exists方法以及您对该文件进行的操作包装在try ... catch块中,如示例所示。 这有助于缩小潜在冲突的范围。 Exists方法只能帮助确保文件可用,但不能保证该文件可用。

这可能是文件夹虚拟化问题吗?

在删除文件之前是否已打开文件以进行读取? 如果是这样,即使在文件系统以其他方式放开之后,仍然能够从打开的文件中读取数据并不奇怪。

RE: File.Exists()

File.Exists本质上很容易出现竞争状况。 在执行某些操作之前,不应将其用作排他性的方式来验证文件是否存在。 此错误可能经常导致软件内的安全漏洞。

相反,请始终处理可能会因打开的实际文件操作等引发的异常,并在输入打开后对其进行验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM