Directory.getFiles类型' System.IO.IOException'的例外。发生在mscorlib.dll中

时间:2016-01-12 22:47:49

标签: c# wpf

我相对精通C#,已经在Unity(游戏引擎)工作了5年了,但是不要太靠近Windows,如果它是一个愚蠢的东西,那么我就是一个傻瓜#39;我错过了。

在我的WPF应用程序中,我正在尝试在根应用程序位置(\ bin \ Debug)中查找文件,但是在运行它时我一直收到此错误。

  

类型' System.IO.IOException'的例外情况发生在mscorlib.dll中   但未在用户代码中处理附加信息:目录   名称无效。

希望有人在这里可以看到我做错了什么,并帮助我解决这个问题。 我正在为一个朋友做一个侧面项目,这个朋友需要一些知道c#的人的帮助,但我以前从未接近Windows方面。 (它正在"公共MainWindow()"初始化程序中运行。

InitializeComponent();
string[] filePath = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "settings.txt");
string fileContent = filePath.ToString();
string[] contentArray = fileContent.Split(':');
string contentColor;
string contentIntensity;

for (int i = 0; i < contentArray.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            if (contentArray[i].ToLower().Contains("color: "))
            {
                contentColor = contentArray[i].Replace("title: ", "");
            }

            if (contentArray[i].ToLower().Contains("intensity: "))
            {
                contentIntensity = contentArray[i].Replace("intensity: ", "");
            }
            break;
        }
    }
}

3 个答案:

答案 0 :(得分:1)

你在想什么?

string[] filePath = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "settings.txt");
string fileContent = filePath.ToString();

应该写成:

string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.txt");
string fileContent = File.ReadAllText(filePath);

答案 1 :(得分:0)

你可以做这样的事情

 var filePath = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory).
       Where(name => name.Contains("settings")).ToList();

 var filePath = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory).
       Where(name => name.EndsWith(".txt")).ToList();

或返回一个字符串[]

 var filePath = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory).
       Where(name => name.EndsWith(".txt")).ToArray();

答案 2 :(得分:0)

来自MSDN

Directory.GetFiles:

  

返回与之匹配的文件名(包括其路径)   指定的directory中指定的搜索模式。

方法GetFiles接受一个或两个参数,pathpath and a search pattern,路径必须是directory

IOException 在以下情况发生:

路径是file name或者存在网络错误,您是第一种情况。 您提供的方法参数(AppDomain.CurrentDomain.BaseDirectory + "settings.txt")这是一个文件名而不是目录,这就是您遇到该异常的原因。

所以,不要在文件上调用GetFiles!只需将两个字符串组合起来即可获得文件路径:

string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.txt");
相关问题