无法访问文件
本文关键字:文件 访问 | 更新日期: 2023-09-27 18:04:44
下面一行使我能够访问我的结果文件:
// Write the string to a file.
public System.IO.StreamWriter file = new System.IO.StreamWriter
("C:''TestDev''Visual Stidio 2012 Developments''Training''Project
1''HSMTESTClient_03''HSMTESTClient''Results''Results.txt");
之后,我使用以下命令写入我的文件:
file.WriteLine(" TX: " + message + "'r'n");
一切正常。然而,在这个开发(加密/解密程序)中,我设法嵌入了另一个名为SafeNetAdaptor的项目。到目前为止,所有向my Results文件写入的尝试都失败了。在这个非常复杂的过程中,我需要能够记录各种操作的结果。为了继续调试,我准备为该部分创建一个不同的Results文件—然而,尽管创建了该文件,但没有向其写入结果。为什么会这样呢?谢谢你的帮助& &;考虑。
不是个好主意:)
考虑使用日志框架。周围有很多。例子是
- log4net 日志
public System.IO.StreamWriter file
对我大喊"BAD"
通过公共字段共享对文件的访问?坏主意。您希望提供封装。理想情况下,您希望提供处理语义。您需要处理缓冲。你想独立于实际实现——而不是一个公共的StreamWriter
,公开一个日志记录类(正如Stefano所写的,你通常会使用一个现成的日志记录框架)。
StreamWriter
需要手动刷新,它不会像您那样快速写入。即使刷新StreamWriter
也不能保证任何事情,因为它仍然可以在写缓冲区中- I/O操作几乎从来没有直接对设备进行过。而且,在每次日志尝试之后刷新会使性能受到影响——不是很好,因为日志记录对性能的影响应该尽可能小。
完成后不要忘记正确关闭文件。理想情况下,如果您只处理子操作的日志记录,只需将整个内容包装在using
中:
using (var file = File.CreateText("results.txt"))
{
var log = new MyLoggingManager(file);
DoStuff(log);
}
还会出现很多其他问题,比如文件共享、权限、并发访问等等。只需使用日志框架:)