我正在使用common file dialog。我想我需要了解和验证很多事情,例如。文件类型,文件存在,内存不足等。
对于文件类型,我可以限制可以使用打开文件对话框打开的文件类型吗?过滤器似乎仍然允许用户键入具有不同文件类型的文件。我必须在代码中验证吗?
我可以说只需设置CheckFileExists = True
,我就不需要再次检查文件存在的代码吗?
是否需要验证是否有OutOfMemoryException
?我在想,如果所有我应该打开的是小文件,我可以逃脱不处理?我觉得这不是一个好习惯吗?
还有其他我错过了吗?
答案 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
}