gpt4 book ai didi

c# - 使用 C# 编写 TEXT 文件

转载 作者:行者123 更新时间:2023-12-03 23:07:06 28 4
gpt4 key购买 nike

我正在尝试将 SaveFileDialog 添加到我的 Windows 应用程序,在其中我从多行文本框的内容中保存一个简单的文本文件。该程序似乎在保存对话框之前工作正常,并且我没有收到任何错误,但是一旦我单击保存按钮,应用程序就会挂起。唯一的出路是单击“停止调试”按钮。以下是我尝试过的代码部分,但都创建了相同的挂起:

private void button_SaveToFile_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.RestoreDirectory = true;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
File.WriteAllText(saveFileDialog1.FileName, textBox_ListDestination.Text);
}
}

private void button_SaveToFile_Click(object sender, EventArgs e)
{
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStream = saveFileDialog1.OpenFile()) != null)
{
File.WriteAllText(saveFileDialog1.FileName, textBox_ListDestination.Text);
myStream.Close();
}
}
}

最佳答案

杰格,

当我尝试使用您的第一个示例代码重新创建问题时,我没有任何问题。如果我猜的话,您可能会遇到内存分配问题(使用非托管资源)以及多次尝试调试,并且可能一遍又一遍地重新保存到同一个文件可能会留下一个错误的文件指针。

你的第二个例子不起作用。当您调用 File.WriteAllText 时,它会自动为您打开、写入和关闭文件。 (在这里阅读:http://msdn.microsoft.com/en-us/library/system.io.file.writealltext.aspx)

当您调用 OpenFile 时,您将锁定该文件。在您的代码中,当执行 File.WriteAllText 时,它会爆炸,因为该文件已在使用中。如果您想使用 OpenFile 处理文件,则必须更改处理文件的方式。这是一个例子:http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.openfile(v=VS.71).aspx请注意示例如何关闭文件,如果您想在文件中进行操作,您可以在调用 CloseFile 方法之前编写该工作的代码。

如果您想了解如何使用 OpenFile 处理文件的示例,互联网上应该有几个示例,但根据您的需要,我认为 File.WriteAllText 会起作用。

回到第一个例子。

如果您在调试期间多次点击代码,我唯一的建议是将 SaveFileDialog 包装在“使用”语句中。这可能有助于系统挂起和一些调试。

private void button1_Click(object sender, EventArgs e)
{
using (var sfd = new SaveFileDialog())
{
sfd.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
sfd.FilterIndex = 2;

if (sfd.ShowDialog() == DialogResult.OK)
{
File.WriteAllText(sfd.FileName, textBox_ListDestination.Text);
}
}
}

关于c# - 使用 C# 编写 TEXT 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449407/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com