[英]An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll The directory name is invalid
[英]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.