需要有关 foreach 的“无法将类型'char'转换为'字符串'”错误的帮助
本文关键字:错误 帮助 char 转换 字符串 类型 foreach 无法将类型 | 更新日期: 2023-09-27 18:30:30
我很抱歉成为那些只问问题的人之一,但在我语言方面变得更好之前,我不能做更多的事情。
我正在尝试为玩这个游戏的朋友制作一个程序。我个人玩得不多,但他是服务器上的工作人员,他说他使用Skype来检查人们是否有黑客和非法模组。我一直在为他开发一个程序,该程序现在将显示 ListView 中指定的目录,直到我让它工作,以便我可以通过 SMTP 或 ftp 发送它。
无论如何,这是代码。任何帮助将不胜感激。
private void button1_Click(object sender, EventArgs e)
{
string files = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"'.minecraft";
foreach (string file in files)
{
string fileName = Path.GetFileNameWithoutExtension(file);
ListViewItem item = new ListViewItem(fileName);
item.Tag = file;
listView1.Items.Add(item);
在此处存储一个带有文件路径的字符串:
string files =
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"'.minecraft";
然后在此处循环访问该字符串中的字符集合(不是您想要的),然后尝试将每个字符存储在名为"file"的字符串中。
foreach (string file in files)
您想要的是使用以下Directory.GetFiles()
获取特定目录中的文件:
var minecraftDirectory =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft");
var files = Directory.GetFiles(minecraftDirectory, "*", SearchOption.AllDirectories);
foreach (var file in files)
{
...
}
看起来像GetFolderPath
返回一个字符串。 然后,您将遍历该字符串的所有部分,即字符。 然后,您尝试将其放入名为 file
的字符串中。 编译器抱怨file
因为它是一个字符串,而不是一个字符。
换句话说,GetFolderPath
返回类似"c:/Files/MoreFiles"的内容,而您输入files
。 如果你遍历它,你会得到'c',然后是':',然后是'/',然后是'F',依此类推。 您正在尝试将其分配给名为"file"的字符串。 我怀疑这不是你的意思。
看起来您错过了一个调用,该调用采用文件路径(在字符串中)并返回文件列表,然后您可以对其进行迭代。
Environment.GetFolderPath
返回一个字符串值。 字符串只是 char
的枚举。所以当你打电话
foreach(string file in files)
将抛出错误,因为files
实际上只是一个字符串。
您可能想研究Directory.EnumerateFiles
在您的代码中,"files"是一个字符串。当你到达"foreach(文件中的字符串文件)"时,foreach试图将"文件"分解为字符,但你强迫它是一个字符串(字符串文件)。
查看 Environment.GetFolderPath 方法的文档:http://msdn.microsoft.com/en-us/library/system.environment.getfolderpath(v=vs.110).aspx
我感觉你认为这做了一些与你认为应该做的事情不同的事情。