无法访问的文件

时间:2014-05-23 14:30:44

标签: c# .net

以下行允许我访问我的结果文件:

// 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的项目。到目前为止,所有写入我的结果文件的尝试都失败了。我需要能够在这个非常复杂的过程中记录各种操作的结果。 为了与调试一起使用,我准备为该部分创建一个不同的结果文件 - 但是,尽管文件已创建,但没有写入任何结果。为什么会这样? 感谢您的帮助和帮助考虑。

2 个答案:

答案 0 :(得分:1)

不是个好主意:)

考虑使用日志框架。周围有很多。例子是

答案 1 :(得分:0)

public System.IO.StreamWriter file

向我尖叫“不好”。

通过公共字段共享对文件的访问权限?馊主意。你想提供封装。理想情况下,您希望提供处理语义。你需要处理缓冲。您希望独立于实际实现 - 而不是公共StreamWriter,公开日志记录类(正如Stefano所写,您通常使用现成的日志记录框架)。

StreamWriter需要手动刷新,它不会在您写入时立即写入。即使刷新StreamWriter也不能保证任何东西,因为它仍然可以在写缓冲区中 - I / O操作几乎不会直接对设备进行。此外,每次尝试日志后刷新都会使您的性能受损 - 不是很好,因为日志记录对性能的影响应尽可能小。

完成后不要忘记正确关闭文件。理想情况下,如果您只处理子操作的日志记录,只需将整个内容包装在using中:

using (var file = File.CreateText("results.txt"))
{
  var log = new MyLoggingManager(file);

  DoStuff(log);
}

可能出现的大量其他问题与文件共享,权限,并发访问等等有关。只需使用日志框架:)