繁体   English   中英

Directory.getFiles mscorlib.dll中发生了类型为'System.IO.IOException'的异常

[英]Directory.getFiles An exception of type 'System.IO.IOException' occurred in mscorlib.dll

我比较精通C#,已经在Unity(游戏引擎)中工作了5年,但是离Windows不太远,如果我错过了一些愚蠢的话,请直接注意。

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

mscorlib.dll中发生类型'System.IO.IOException'的异常,但未在用户代码中处理。其他信息:目录名无效。

希望这里的人可以看到我做错了什么,并帮助我解决此问题。 我正在为一个朋友的辅助项目进行这项工作,他需要一个了解c#的人提供一些帮助,但是我以前从未接触过Windows。 (它正在“ public 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;
        }
    }
}

你在这里想什么

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);

你可以做这样的事情

 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();

MSDN

Directory.GetFiles:

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

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

在以下情况下发生IOException

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

因此,与其在文件上调用GetFiles! 只需将两个字符串结合起来即可执行以下操作以获得文件路径:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM