Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法访问的文件_C#_.net - Fatal编程技术网

C# 无法访问的文件

C# 无法访问的文件,c#,.net,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"); 之后,我利用以下内容写

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

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

这不是个好主意:)

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

只是对我喊“坏”

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

StreamWriter
需要手动刷新,它不会像您那样立即写入。即使刷新
StreamWriter
也不能保证任何事情,因为它仍然可以在写缓冲区中—I/O操作几乎从未直接对设备执行过。此外,每次尝试日志后刷新都会影响性能—不是很好,因为日志记录对性能的影响应该尽可能小

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

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

  DoStuff(log);
}

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

当调用
Flush
或处理
StreamWriter
时,
StreamWriter
缓冲一些数据,您只能确保所有数据都已写入文件(考虑使用
using
语句)。您也可以考虑编写<代码> Trace<代码> > < AutoFlush > /代码>已启用。为已故回复道歉。谢谢您的评论尼可。为已故的答复道歉。谢谢您的评论Luaan。是的,我同意你关于数据写入的评论,注意到了随机日志。
using (var file = File.CreateText("results.txt"))
{
  var log = new MyLoggingManager(file);

  DoStuff(log);
}