C#:打开和保存文件需要了解哪些内容(例如验证)

时间:2010-08-22 12:49:36

标签: c#

我正在使用common file dialog。我想我需要了解和验证很多事情,例如。文件类型,文件存在,内存不足等。

对于文件类型,我可以限制可以使用打开文件对话框打开的文件类型吗?过滤器似乎仍然允许用户键入具有不同文件类型的文件。我必须在代码中验证吗?

我可以说只需设置CheckFileExists = True,我就不需要再次检查文件存在的代码吗?

是否需要验证是否有OutOfMemoryException?我在想,如果所有我应该打开的是小文件,我可以逃脱不处理?我觉得这不是一个好习惯吗?

还有其他我错过了吗?

3 个答案:

答案 0 :(得分:1)

是的,您需要验证使用OpenFileDialog选择的文件是否存在且类型是否正确,因为这些文件无法强制执行。至于OutOfMemoryException,我担心没有可靠的方法来测试它是否会发生。即使您尝试查看可用内存并验证此数字是否大于文件大小,稍后当您尝试读取该文件时仍可能发生异常,因为垃圾收集器或其他某个进程可能已更改此内容。

答案 1 :(得分:1)

检查每个可能的情况都不是很好的策略。第39行上存在的文件很容易被第45行消失。大对象堆碎片也是很难发现的,也是获得OOM异常的常见原因。恕我直言,您应该尝试对文件执行任何操作,并处理IO层抛出的异常。

答案 2 :(得分:0)

如果文件类型很重要,以及文件是否存在,您可以检查文件类型。

bool fileExists = File.Exists("file.txt")

您应该在“使用”块内打开文件进行读取或写入,以确保正确释放文件句柄。

using (StreamReader reader = new StreamReader("file.txt"))
{
    string line = reader.ReadLine();
}

写入磁盘时可能会抛出许多异常,因此您应该处理它们。如果您在try-catch块中进行文件访问,则可以捕获发生的任何异常并处理它。

try 
{
    // work with file
}
catch(Exception e) 
{
    // handle any exception
}