C# 如果文件名已存在,则显示消息
我正在使用c#.net windows窗体应用程序。C# 如果文件名已存在,则显示消息,c#,C#,我正在使用c#.net windows窗体应用程序。 我必须在defaultsetting.xml文件中保存一些输入,但是如果存在具有相同文件名“defaultsetting.xml”的无效文件,我应该在状态栏中显示msg。。如何执行此操作?您可以使用(路径)检查文件是否存在,然后显示消息。您可以使用(路径)检查文件是否存在,然后显示消息。您是指StatusStrip吗 只需将ToolStripStatusLabel添加到StatusStrip并设置标签的文本属性 要检查文件是否存在,请使用Sy
我必须在defaultsetting.xml文件中保存一些输入,但是如果存在具有相同文件名“defaultsetting.xml”的无效文件,我应该在状态栏中显示msg。。如何执行此操作?您可以使用(路径)检查文件是否存在,然后显示消息。您可以使用(路径)检查文件是否存在,然后显示消息。您是指StatusStrip吗 只需将ToolStripStatusLabel添加到StatusStrip并设置标签的文本属性
要检查文件是否存在,请使用System.IO.file.exists(文件路径)。您是指StatusStrip吗 只需将ToolStripStatusLabel添加到StatusStrip并设置标签的文本属性 要检查文件是否存在,请使用System.IO.file.exists(文件路径) 或者,您可以使用以下选项:
StreamWriter sw = null;
try
{
sw = new StreamWriter((Stream)File.Open(@"C:\DefaultSettings.txt", FileMode.CreateNew));
sw.WriteLine("Test");
}
catch (IOException ex)
{
if (ex.Message.Contains("already exists"))
{
statusbar1.Text = "File already exists";
}
else
{
MessageBox.Show(ex.ToString());
}
}
finally
{
if (sw != null)
{ sw.Close(); }
}
或者,您可以使用以下选项:
StreamWriter sw = null;
try
{
sw = new StreamWriter((Stream)File.Open(@"C:\DefaultSettings.txt", FileMode.CreateNew));
sw.WriteLine("Test");
}
catch (IOException ex)
{
if (ex.Message.Contains("already exists"))
{
statusbar1.Text = "File already exists";
}
else
{
MessageBox.Show(ex.ToString());
}
}
finally
{
if (sw != null)
{ sw.Close(); }
}
不要使用
文件。存在
永远不要使用文件。存在,它总是引入竞争条件
相反,使用“仅创建”选项以写入模式打开文件,如果文件已经存在,则处理异常(以及其他错误,例如没有在该目录中写入的权限、网络共享已断开连接等)。不要使用文件。存在
永远不要使用文件。存在,它总是引入竞争条件
相反,使用“仅创建”选项以写入模式打开文件,如果文件已经存在,则处理异常(以及其他错误,例如没有在该目录中写入的权限、网络共享已断开连接等)问问自己:用户是否需要知道文件未能保存
如果否,则通过覆盖文件为他们处理情况。它将创造更好的体验,因为用户界面摩擦/垃圾邮件更少
示例A
if (File.Exists(path))
File.Delete(path);
Save("defaultsettings.xml");
if (File.Exists(path))
this.m_StatusBarLabel.Text = "Error: Could not write to file: \"" + path + "\"";
else
Save("defaultsettings.xml");
如果是,则检查文件是否存在,并通过显示消息框
或更改应用程序状态条
上的文本标签通知用户
示例B
if (File.Exists(path))
File.Delete(path);
Save("defaultsettings.xml");
if (File.Exists(path))
this.m_StatusBarLabel.Text = "Error: Could not write to file: \"" + path + "\"";
else
Save("defaultsettings.xml");
其中m_StatusBarLabel
是添加到状态条控件中的ToolStripStatusLabel
。使用VisualStudio中的设计器一起创建(非常简单)
提示:如果用户需要执行某些操作,请将文本设置为超链接或添加单击事件
HTH,问问自己:用户是否需要知道文件保存失败
如果否,则通过覆盖文件为他们处理情况。它将创造更好的体验,因为用户界面摩擦/垃圾邮件更少
示例A
if (File.Exists(path))
File.Delete(path);
Save("defaultsettings.xml");
if (File.Exists(path))
this.m_StatusBarLabel.Text = "Error: Could not write to file: \"" + path + "\"";
else
Save("defaultsettings.xml");
如果是,则检查文件是否存在,并通过显示消息框
或更改应用程序状态条
上的文本标签通知用户
示例B
if (File.Exists(path))
File.Delete(path);
Save("defaultsettings.xml");
if (File.Exists(path))
this.m_StatusBarLabel.Text = "Error: Could not write to file: \"" + path + "\"";
else
Save("defaultsettings.xml");
其中m_StatusBarLabel
是添加到状态条控件中的ToolStripStatusLabel
。使用VisualStudio中的设计器一起创建(非常简单)
提示:如果用户需要执行某些操作,请将文本设置为超链接或添加单击事件
HTH,请详细描述它在哪里引入了竞争条件?我同意你必须小心使用File.Exists
,但是说永远不要使用它是反应过度了。我最近在生产系统中经常使用它,因为它完全符合我的需要(我需要知道文件是否出现,如果它们在我完成处理之前消失,这将是一个系统故障,通常通过正常的异常处理进行处理)。请详细描述它在哪里引入竞争条件?我同意你必须小心使用File.Exists
,但是说永远不要使用它是反应过度了。我最近在生产系统中经常使用它,因为它完全符合我的需要(我需要知道文件是否已经出现,如果它们在我完成处理之前消失,这将是一个系统故障,正常情况下会通过正常的异常处理来处理)。通过调用File.existedinthecentrePast
停止它@本沃伊特。谢谢你的链接,本。我同意你的观点,文件系统应该被视为一种动态共享资源,因为很可能你不是唯一访问它的人。在了解这一点的同时,这个问题和我的答案的重点是如何/何时通知用户这种情况。通过调用File.existedintheCenterPast
停止它@本沃伊特。谢谢你的链接,本。我同意你的观点,文件系统应该被视为一种动态共享资源,因为很可能你不是唯一访问它的人。在了解这一点的同时,这个问题和我的回答的重点是如何/何时通知用户情况。