Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果文件名已存在,则显示消息_C# - Fatal编程技术网

C# 如果文件名已存在,则显示消息

C# 如果文件名已存在,则显示消息,c#,C#,我正在使用c#.net windows窗体应用程序。 我必须在defaultsetting.xml文件中保存一些输入,但是如果存在具有相同文件名“defaultsetting.xml”的无效文件,我应该在状态栏中显示msg。。如何执行此操作?您可以使用(路径)检查文件是否存在,然后显示消息。您可以使用(路径)检查文件是否存在,然后显示消息。您是指StatusStrip吗 只需将ToolStripStatusLabel添加到StatusStrip并设置标签的文本属性 要检查文件是否存在,请使用Sy

我正在使用c#.net windows窗体应用程序。
我必须在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
停止它@本沃伊特。谢谢你的链接,本。我同意你的观点,文件系统应该被视为一种动态共享资源,因为很可能你不是唯一访问它的人。在了解这一点的同时,这个问题和我的回答的重点是如何/何时通知用户情况。