保存txt文件到错误的位置

jac*_*nSD 1 c# streamwriter savefiledialog winforms

我正在尝试将文本文件日志保存到Windows窗体项目中的特定位置.我设置InitialDirectoryPath.GetFullPath(filePath)其中我通过在filePath被设置为一个简单的路径"C:\MyWork\EventLogs\"

日志保存在程序的退出(当用户关闭或点击退出按钮时),但它仍然保存在Project\bin\Debug我的项目的文件夹中.

任何想法都会很棒.谢谢!

try
{
    DateTime today = DateTime.Now;
    string todayDate = today.ToString("yyyy-MM-dd_HHmm");
    string fileName = (todayDate + "_EventLog" + ".txt").Trim();
    string filePath = @"C:\MyWork\EventLogs\";
    DirectoryInfo di = Directory.CreateDirectory(filePath);
    SaveFileDialog sn = new SaveFileDialog
    {
        FileName = fileName,
        AddExtension = true,
        CheckPathExists = true,
        Filter = "Text (*.txt)|*.txt",
        OverwritePrompt = true,
        InitialDirectory = Path.GetFullPath(filePath)
    };

    sn.RestoreDirectory = true;
    StreamWriter SaveFile = new StreamWriter(fileName);
    foreach (var item in EventLog)
    {
        SaveFile.WriteLine(item);
    }
    SaveFile.Close();
}
catch (Exception x)
{
    MessageBox.Show(x.ToString());
}
Run Code Online (Sandbox Code Playgroud)

Llo*_*oyd 6

您不会FileName在当前代码中显示保存对话框或使用其属性,而是fileName在保存时引用初始值.

所以你需要做的就是这样:

if (sn.ShowDialog() == DialogResult.OK)
{
    using (StreamWriter SaveFile = new StreamWriter(sn.FileName))
    {
        foreach (var item in EventLog)
        {
            SaveFile.WriteLine(item);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将显示保存对话框,并假设用户单击"确定" FileName,保存对话框应该是用户要保存到的完整路径.