【发布时间】:2009-08-17 20:21:09
【问题描述】:
如何检查我的 C# 中的以下语句是否正确执行?
StreamReader sr = new StreamReader(Path_To_File);
【问题讨论】:
如何检查我的 C# 中的以下语句是否正确执行?
StreamReader sr = new StreamReader(Path_To_File);
【问题讨论】:
如果它没有抛出异常,它就会正确执行。如果它抛出一个异常,那么期望 cosntructor 自行整理是合理的。否则,您可以在完成后调用Dispose 来释放相关资源。正如其他答案所说,您几乎肯定希望使用 using 语句来完成此操作。
您可能还想改用File.OpenText:
using (TextReader reader = File.OpenText(fileName))
{
}
我通常只在需要传递不同选项时使用StreamReader 构造函数(这种情况很少见)。
【讨论】:
如果没有,我希望它会引发异常。所以什么也不做;它会告诉你是否有问题。不过你应该是“using”吧:
using(StreamReader sr = new StreamReader(Path_To_File))
{
// consume sr
}
【讨论】:
由于 StreamReader 实现了 IDisposable,因此您可以使用“使用”块。
using(StreamReader sr = new StreamReader(Path_To_File)) {
}
【讨论】:
我可能在问题中遗漏了一些东西,因为这似乎太明显了,但要寻找的两件事是
如果1为假,2为真,则正确执行。
【讨论】:
StreamReader constructor(假设是字符串路径参数)如果失败将抛出异常。
引用自链接:
参数异常
path 是一个空字符串 ("")。
ArgumentNullException
路径为空。
FileNotFoundException
找不到文件。
DirectoryNotFoundException
指定的路径无效,例如位于未映射的驱动器上。
IO异常 path 包含不正确或无效的文件名、目录名或卷标语法。
【讨论】:
您希望使用标准的 Try / Catch 块检查异常,如下所示:
string pathToFile = @"G:\My Documents\donkeysex.txt";
StreamReader sr = null;
try
{
sr = new StreamReader(pathToFile);
sr.Read();
// etc.
}
catch (System.IO.FileNotFoundException ex)
{
// Handle exception
}
catch (System.IO.DirectoryNotFoundException ex)
{
// Handle exception
}
catch (System.IO.IOException ex)
{
// Handle exception
}
catch (Exception ex)
{
// Handle exception
}
finally
{
if (sr != null)
sr.Dispose();
}
如果您只是想在阅读之前确保文件存在,请使用:
if (System.IO.File.Exists(pathToFile))
{
// Do your stuff
}
【讨论】:
你通常会对实例 sr 做一些事情。将引用该对象的下一个命令封装在 try catch 块中。
【讨论】: