如果文件名已存在,则显示一条消息

时间:2010-06-09 12:22:37

标签: c#

我正在使用c#.net windows form应用程序。 我必须在defaultsetting.xml文件中保存少量输入,但如果存在具有相同文件名“defaultsetting.xml”的无效文件,我应该在状态栏中显示msg ..我该怎么做?

5 个答案:

答案 0 :(得分:4)

问问自己:用户需要知道文件无法保存吗?

如果,则通过覆盖文件来处理它们的情况。由于用户界面摩擦/垃圾邮件较少,它将创造更好的体验。

示例A

  if (File.Exists(path))
      File.Delete(path);

  Save("defaultsettings.xml");

如果,请检查文件是否存在,并通过显示MessageBox或更改应用StatusStrip上的文字标签来通知用户。

示例B

  if (File.Exists(path))
      this.m_StatusBarLabel.Text = "Error: Could not write to file: \"" + path + "\"";
  else 
      Save("defaultsettings.xml");

m_StatusBarLabel是您添加到状态条控件的ToolStripStatusLabel。使用Visual Studio中的设计器一起创建它(这很简单)。

提示:如果用户需要执行某些操作,请将文本设为HyperLink或添加Click事件。

HTH,

答案 1 :(得分:2)

请勿使用File.Exists

绝不使用File.Exists始终会引入竞争条件。

相反,使用“仅创建”选项以写入模式打开文件,如果文件已存在则处理异常(以及其他错误,例如无权在该目录中写入,网络共享断开连接等。)

答案 2 :(得分:0)

您可以使用File.Exists(路径)检查文件是否存在,然后显示您的消息。

答案 3 :(得分:0)

您的意思是StatusStrip吗?

只需将ToolStripStatusLabel添加到StatusStrip并设置标签的Text属性。

要检查文件是否存在,请使用System.IO.File.Exists(filepath)。

答案 4 :(得分:0)

 if (System.IO.File.Exists(@"C:\defaultsettings.xml"))
    {
        statusbar1.Text = "Default Settings already 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(); }
        }