C# 关于检查文件存在与目录为空以及可靠性的问题

C# 关于检查文件存在与目录为空以及可靠性的问题,c#,reliability,defensive-programming,C#,Reliability,Defensive Programming,我知道几乎每种编程语言都有一种检查文件或目录是否存在的方法 但是,在我的例子中,创建了一个存储程序设置的文件。如果它不存在(即!File.Exists或Directory.Count==0,其中Directory是文件的包含目录),则提示填写一些设置 然而,这种代码可靠吗?例如,在请求详细信息的情况下,目录中可能没有文件,否则可能存在与此无关的其他类型的文件或格式正确的篡改文件。检查特定文件本身是否更好?检查组成文件的变量是否更好,因为这样更快 做这件事最好的一般方法是什么?检查一个文件,如果文

我知道几乎每种编程语言都有一种检查文件或目录是否存在的方法

但是,在我的例子中,创建了一个存储程序设置的文件。如果它不存在(即
!File.Exists或Directory.Count==0,其中Directory是文件的包含目录),则提示填写一些设置

然而,这种代码可靠吗?例如,在请求详细信息的情况下,目录中可能没有文件,否则可能存在与此无关的其他类型的文件或格式正确的篡改文件。检查特定文件本身是否更好?检查组成文件的变量是否更好,因为这样更快

做这件事最好的一般方法是什么?检查一个文件,如果文件夹在那里?如果文件夹在那里并且是空的?检查写入文件的字符串

编辑:一位同事的想法是,我应该在变量级别进行检查,因为这将更接近问题所在(识别不正确的加密、损坏、区域设置等问题)


谢谢

我只想检查一下特定文件的存在和有效性。如果遇到损坏的文件,请将其删除并创建一个新文件。

对于基本开发,这纯粹是一种选择。如果文件的存在对应用程序的稳定性至关重要,那么直接检查文件是最安全的方法。

多线程/客户端是否同时检查文件?我认为这很重要。你为什么不简单地检查一下这个文件的存在呢?你为什么要做
Directory.Count==0
检查呢?希望不是。。。从多个线程读取同一个文件是一种可怕的程序设计。@Sam Dufel-只要它有适当的锁保护,我看不出有问题。特别是如果这是网络共享上的共享配置文件。当然,在相同的过程中,出于性能原因缓存结果是有意义的,但是每次读取结果也不是犯罪。它并没有提到任何关于代码质量的问题。很好的一点是,我更多地考虑了一个本地应用程序,它有多个线程来检查配置文件中的设置,而不是管理一个同步对象中的设置。