我相对精通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;
}
}
}
答案 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
接受一个或两个参数,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");