【发布时间】:2018-03-20 18:50:17
【问题描述】:
我正在创建一个可以将网站网址/链接保存到列表框中的小程序。从那里,我可以将列表框的内容保存到文本文件中。然后将该文本文件保存到我桌面上为该程序过早制作的文件夹中。该应用程序可以打开一个文本文件并将内容显示到列表框,以及创建和保存一个新的文本文件。我的问题是如何正确覆盖文本文件。
这是我保存工具箱按钮的代码:
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
string line = "";
if (File.Exists(path)) //the path string is a folder on my desktop
{
FileStream fstream = File.Open(path, FileMode.Create);
while (line != null)
{
using (StreamWriter write = new StreamWriter(fstream))
{
foreach (object item in WebListBox.Items)
write.WriteLine(item.ToString());
}
}
}
else
{
saveFileDialog1.Filter = "Text files (*.txt)|*.txt";
saveFileDialog1.Title = "Save as Text File";
saveFileDialog1.ShowDialog();
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
using (FileStream S = File.Open(saveFileDialog1.FileName, FileMode.CreateNew))
{
using (StreamWriter st = new StreamWriter(S))
{
foreach (var items in WebListBox.Items)
st.WriteLine(items.ToString());
}
}
}
}
}
问题是,在我使用“另存为工具栏”按钮创建文本文件后,编译器似乎忽略了我的 if 语句中的代码,并假定我总是想创建一个新的文本文件来保存。提前致谢!
【问题讨论】:
-
"glances" 就像编译器跳过 if 语句并继续读取 else 语句一样。对不起措辞。是的,我一直在调试这段代码,但仍然没有找到任何可能的解决方案。
-
注意:您显示 ShowDialog 两次。在第一个分支中,您的“行”除了一个空字符串之外什么都不是。
-
path是文件的路径还是文件夹?根据 MSDN 关于File.Exists():“如果path描述了一个目录,则此方法返回false。” -
它指向一个文件夹。然后我让我的代码检查文件夹以查看是否存在同名文件,如果存在则覆盖它。
-
你的 while 循环永远不会退出,它应该抛出异常,因为 fstream 永远不会关闭。