【问题标题】:Reading From a Text File in C# before the file is actually selected在实际选择文件之前从 C# 中的文本文件中读取
【发布时间】:2017-04-27 20:06:42
【问题描述】:

我正在编写一个高度依赖目录的程序(它是一个简单的游戏地图生成器)。

问题是,在制作地图之前,您必须选择一个适合您的模板。这是通过在“模板”目录中获取目录列表并将它们转换为稍后传输到 ComboBox 的数组来完成的。然后,如果在文件夹中我们有一个特定文件,则加载它,并将其中的值放入 TextBoxes。

比方说:“Program\Templates\SelectedTemplate\configfile.txt”

很遗憾,因为默认列表是空的,当我试图编译程序时,它给了我一个“DirectoryNotFoundException”,因为他正在寻找一个还不存在的目录,比如:

“程序\模板\配置文件.txt”

我试图通过选择一个肯定存在的默认值来阻止它,甚至首先检查该文件是否存在于函数中。这根本没有帮助。

有什么建议可以解决吗?如何防止“DirectoryNotFoundException”在尚未加载的函数中发生崩溃应用程序?

【问题讨论】:

  • 请贴一些代码
  • 我不明白你的问题是在编译还是运行时崩溃..,
  • 我不明白你描述的问题。请问代码?您是否尝试过 catching DirectoryNotFoundException?

标签: c# exception directory


【解决方案1】:

目前尚不清楚您到底想做什么。程序在编译时生成错误是没有意义的。我假设你的意思是当你运行它时。

如果您发布相关的代码块也会有所帮助。 您如何检查文件是否存在?如果文件的路径包含尚不存在的目录名称,则将引发异常是有意义的。

您始终可以将代码包装在 Try/Catch 块中,并测试该特定错误,这样您的应用就不会崩溃。

【讨论】:

    【解决方案2】:

    检查目录,如果不存在则创建它。然后创建一个空白文件作为占位符,直到稍后。

    if (!File.Exists(@"Program\Templates\SelectedTemplate\"))
    {
        Directory.CreateDirectory(@"Program\Templates\SelectedTemplate\");
    
        if (!File.Exists(@"Program\Templates\SelectedTemplate\configfile.txt"))
        {
            using (File.Create(@"Program\Templates\SelectedTemplate\configfile.txt")) ;
        }
    }
    

    或者类似的东西应该可以消除你的错误。

    【讨论】:

      【解决方案3】:

      您可以使用Directory.Exists ("Program\Templates\SelectedTemplate\") 来检查目录是否存在,并为用户添加一些 UI 以在其中创建该目录甚至是一个新模板。

      或者,如果您只是需要它来填充您的 ComboBox,请在使用文件名创建数组时使用 try...catch,捕获 DirectoryNotFoundException 并使用空数组初始化您的数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-24
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        • 2012-08-31
        相关资源
        最近更新 更多