C# 使用File.ReadAllText的静态字符串

C# 使用File.ReadAllText的静态字符串,c#,.net,windows,.net-3.5,C#,.net,Windows,.net 3.5,我试图将File.ReadAllText用作静态只读字符串。我的问题是我正在用.NETz编译它,当我的程序启动时,它会查找我的字符串,如果不是 我发现我有一个严重的例外。是否可以通过某种方式使用if/else来绕过这个问题 通常我会让它弹出一个消息框或标签,说明找不到文件。如果找不到文件,使用.Netz,我会收到一条错误消息,程序不会启动 这是在整个程序中使用的静态字符串 static readonly string config = File.ReadAllText("config.ini")

我试图将
File.ReadAllText
用作静态只读字符串。我的问题是我正在用.NETz编译它,当我的程序启动时,它会查找我的字符串,如果不是 我发现我有一个严重的例外。是否可以通过某种方式使用if/else来绕过这个问题

通常我会让它弹出一个消息框或标签,说明找不到文件。如果找不到文件,使用.Netz,我会收到一条错误消息,程序不会启动

这是在整个程序中使用的静态字符串

static readonly string config = File.ReadAllText("config.ini");

我正在使用.Netz包含我的dll。

将工作移动到静态构造函数,而不是与声明内联。然后,添加
try/catch
块来处理您认为合适的错误情况就变得很简单了:

public class MyClass
{
    static readonly string config;

    static MyClass()
    {
        try
        {
            config = File.ReadAllText("config.ini");
        }
        catch (FileNotFoundException)
        {
            //do something else
            //use a default configuration?
            //report to the user?
            //crash and burn?
        }
    }
}

请注意,除了在路径中找不到文件之外,还有读取文件可能失败的原因。您可能也想考虑一下其中的一些。

,而不是将它与声明进行内联,将工作移到静态构造函数。然后,添加
try/catch
块来处理您认为合适的错误情况就变得很简单了:

public class MyClass
{
    static readonly string config;

    static MyClass()
    {
        try
        {
            config = File.ReadAllText("config.ini");
        }
        catch (FileNotFoundException)
        {
            //do something else
            //use a default configuration?
            //report to the user?
            //crash and burn?
        }
    }
}
public partial class Form1 : Form
{
    public class configi
    {
        public static string config;
        static configi()
        {
            try
            {
                config = File.ReadAllText("config.ini");

            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
        }
    }
    public Form1()
    {
        InitializeComponent();

    }

    static string username = (Environment.GetEnvironmentVariable("USERNAME"));
    static string Backups = configi.config + @"\" + username + @"\" + "Backups" + @"\";
    static string items;

请注意,除了在路径中找不到文件之外,还有读取文件可能失败的原因。你可能也想考虑一下其中的一些。

抛出的异常是什么?使用一个尝试捕捉,然后看看例外不同于论坛站点,我们不使用“谢谢”,或“任何帮助赞赏”,或签名。请参阅“.引发的异常是什么?使用try-catch然后查看异常类似于论坛网站,我们不使用“感谢”或“感谢任何帮助”或签名。请参阅”。或者如果是
FileNotFoundException
,请先检查该文件是否与
file.exists
一起实际存在。我知道该文件不存在。问题是如何处理该文件。@user1908061:在打开该文件之前,检查该文件是否存在不会阻止它被其他线程删除。看@chrissinclair,我不知道它属于哪里。我已经编辑了主要问题,并添加了我的内容。@user2190928:现在在您的表单中还可以。虽然我更喜欢将它移动到某种类型的专用
Config
类,而不是将它嵌入到
Form1
对象中。或者在
FileNotFoundException
的情况下,检查该文件是否与
file.exists
一起实际存在。我知道该文件不存在。问题是如何处理该文件。@user1908061:在打开该文件之前,检查该文件是否存在不会阻止它被其他线程删除。看@chrissinclair,我不知道它属于哪里。我已经编辑了主要问题,并添加了我的内容。@user2190928:现在在您的表单中还可以。尽管我更喜欢将它移动到某种专用的
Config
类,而不是将它嵌入到
Form1
对象中。
public partial class Form1 : Form
{
    public class configi
    {
        public static string config;
        static configi()
        {
            try
            {
                config = File.ReadAllText("config.ini");

            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
        }
    }
    public Form1()
    {
        InitializeComponent();

    }

    static string username = (Environment.GetEnvironmentVariable("USERNAME"));
    static string Backups = configi.config + @"\" + username + @"\" + "Backups" + @"\";
    static string items;