回答
如果没有,我期望它会抛出异常。所以什么也不做;它会告诉你是否有问题。但是,你应该是“using
”吧:
using(StreamReader sr = new StreamReader(Path_To_File))
{
// consume sr
}
因为StreamReaders实现了IDisposable,所以可以使用'using'块。
using(StreamReader sr = new StreamReader(Path_To_File)) {
}
如果没有抛出异常,它正确执行。如果抛出一个异常,期望cosntructor自行整理是合理的。否则,当您完成后,您可以致电Dispose
以释放相关资源。正如其他人的回答所说,你几乎可以肯定希望使用using
声明来实现这一点。
你也可能要使用File.OpenText
代替:
using (TextReader reader = File.OpenText(fileName))
{
}
我只是平时使用StreamReader
构造函数时,我需要在不同的选项传递(这是相当罕见)。
我可能会丢失的问题什么的,因为这似乎太明显了,但两人的事情,寻找有
- 没有它抛出一个错误? 和
- 当您运行此操作并使用StreamReader读取时,您是否获得了您期望的内容?
如果1为假,2为真,则它正确执行。
您通常会对实例sr执行任何操作。封装你的下一个在try catch块中引用该对象的命令。
StreamReader constructor(假设一个字符串路径参数)如果失败会引发异常。
从链接引用:
的ArgumentException
路径是空字符串( “”)。
ArgumentNullException
path is null。
FileNotFoundException
无法找到该文件。
DirectoryNotFoundException
指定的路径无效,例如位于未映射的驱动器上。
IOException 路径包含文件名,目录名称或卷标的错误或无效语法。
你最好要检查使用标准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
}
谢谢丹的详细解答。它工作完美。 – zack 2009-08-17 20:47:44
+ +1对于一个很好的理论答案,并且唯一一个带有try/catch的。但您不想将此贴复制到生产代码。 Viren应该研究Excption Handling策略。 – 2009-08-17 21:00:32
- 1. C中的文件操作
- 2. C++中的文件操作
- 3. C++文件操作
- 4. C上的文件操作
- 5. 在c中操作文本文件#
- 6. C++中的类和文件操作
- 7. 在C#中的dbf文件操作
- 8. WinRT C++中的异步文件操作
- 9. 操作XML文件中的OBJ-C
- 10. C文件操作问题
- 11. 从C操作Python文件#
- 12. msi做C#文件操作#
- 13. 在C中操作Cookie头文件#
- 14. C++文件操作:读取文件中的特定行。
- 15. 使用C的Unidata文件操作#
- 16. C++:操作PPM文件的问题
- 17. Java中的文件操作
- 18. Python中的文件操作
- 19. 纯C++或C++中的Python用于文件模板操作?
- 20. 在C中位图文件上的像素操作C
- 21. C++操作元件
- 22. 将文件输入作为C++中的操作码读取
- 23. c - 解密中的位操作/操作
- 24. C++中双操作的新操作
- 25. 文件操作
- 26. 文件操作
- 27. 操作文件
- 28. 文件操作
- 29. C# - 文件操作Galaxy S3 SD卡
- 30. 操作PDF文件,Windows窗体C#
它做不会抛出任何错误。所以1是错误的。 2是真的。但是我想确保这种情况一直发生,并且我知道发生错误的位置。所以我很好奇,这就是为什么我问我的问题。 – zack 2009-08-18 13:09:06