C# 将npgsqlexception字符串写入文件不写入

C# 将npgsqlexception字符串写入文件不写入,c#,file-io,exception-handling,C#,File Io,Exception Handling,您好,我试图将npgsqlexception字符串放入文本文件中,但不知何故它并没有写入文本文件,但字符串显示在控制台窗口中,Log.txt文件存在于调试文件夹中。代码如下: catch (NpgsqlException ex) { Console.WriteLine(ex); StreamWriter file = new StreamWriter("\\Log.txt"); file.WriteLine(ex); file.Close(); } 必须调用Stream

您好,我试图将npgsqlexception字符串放入文本文件中,但不知何故它并没有写入文本文件,但字符串显示在控制台窗口中,Log.txt文件存在于调试文件夹中。代码如下:

catch (NpgsqlException ex)
{
   Console.WriteLine(ex);
   StreamWriter file = new StreamWriter("\\Log.txt");
   file.WriteLine(ex);
   file.Close();
}

必须调用
StreamWriter.Flush()
才能将数据写入文件:

catch (NpgsqlException ex)
{
   Console.WriteLine(ex);
   StreamWriter file = new StreamWriter("Log.txt");
   file.WriteLine(ex);
   file.Flush();
   file.Close();
}
更新-同时删除反斜杠。如果仍然不起作用,请尝试使用StreamWriter构造函数中的FileStream:

 StreamWriter file = new StreamWriter(new FileStream("Log.txt", FileMode.OpenOrCreate));
更新-如果它仍然不起作用,那么肯定还有其他问题。上述措施肯定会奏效。作为替代方案,您可以使用:

File.WriteAllText("Log.txt", ex.ToString());

您是否尝试提供日志文件的完整路径?请删除两个反斜杠。尝试删除这两个反斜杠,但该文件仍然为空,并且充满异常。我只需要应用程序目录,因为该程序将在许多网站上使用PC@Bensinaspa然而,如果人们选择这样做,他们会投反对票。。最终的问题是什么。您想将文件写入
App
文件夹。。对的那么该文件夹的文件路径是什么。。?如果您运行此代码,则异常块甚至会被命中。。你调试过这个并设置断点了吗。。?你能发布你所有的相关代码吗?我不会使用应用程序的文件夹。如果用户没有权限怎么办?改为使用“应用程序数据”文件夹<代码>环境.GetFolderPath(Environment.SpecialFolder.ApplicationData))没有帮助,甚至没有创建文件。@Farhanam所以你要在
文件.Flush()之前调用file.Close()
,这不是答案。此外,如果他希望在应用程序目录中创建文件,那么他需要使用StreamWriter重载来传递文件路径true | | false,以便覆盖文件(如果文件存在或不存在)。。在异常块中对文件进行简单写入时甚至不需要刷新,我可以看到您是否处于循环中,是否希望查看已写入的内容等…刷新很好..但对于这一点,并不真正需要
StreamWriter file=new StreamWriter(new FileStream(“Log.txt”,FileMode.OpenOrCreate))仍然没有necessary@MethodMan是的,你是对的
StreamWriter.Close()
还将数据写入文件。一切似乎都适合我,但不适合OP!这有多奇怪?@MethodMan我很感激你帮助改进了这个问题。很抱歉,当你说我把一项简单的任务搞混了时,我很生气。