需要有关 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);

需要有关 foreach 的“无法将类型'char'转换为'字符串'”错误的帮助

在此处存储一个带有文件路径的字符串:

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

我感觉你认为这做了一些与你认为应该做的事情不同的事情。