需要帮助“使用foreach”无法将类型'char'转换为'string'“错误

时间:2014-11-16 04:49:38

标签: c# string foreach char

我很抱歉成为那些只是提问的人之一,但是在我对这门语言做得更好之前我无法做更多的事情。

我试图为我的一个玩这个游戏的朋友制作一个程序。我个人不会玩很多,但是他在服务器上的工作人员,并说他使用Skype来检查人们是否有黑客和非法的mod。我一直在为他开发一个程序,它将显示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);

4 个答案:

答案 0 :(得分:4)

您可以在此处存储包含文件路径的字符串:

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)
{
    ...
}

答案 1 :(得分:1)

看起来GetFolderPath会返回一个字符串。然后,您将遍历该字符串的所有部分,即字符。然后,您尝试将其放在名为file的字符串中。编译器抱怨,因为file是一个字符串,而不是一个字符。

换句话说,当您放入GetFolderPath时,files会返回类似“c:/ Files / MoreFiles”的内容。如果你遍历它,你会得到'c',然后是':',然后是'/',然后是'F',依此类推。您正在尝试将此分配给名为“file”的字符串。我怀疑这不是你的意思。

看起来你错过了一个调用,它接受一个文件路径(在一个字符串中)并返回一个文件列表,然后你可以迭代它们。

答案 2 :(得分:1)

Environment.GetFolderPath返回一个字符串值。字符串只是char的枚举。所以当你打电话时

foreach(string file in files)

将抛出错误,因为files实际上只是一个字符串。

您可能需要查看Directory.EnumerateFiles

答案 3 :(得分:0)

在您的代码中,"文件"是一个字符串。 当你到达" foreach(文件中的字符串文件)" foreach正试图打破"文件"进入字符,但你强迫它成为一个字符串(字符串文件)。

查看Environment.GetFolderPath方法的文档: http://msdn.microsoft.com/en-us/library/system.environment.getfolderpath(v=vs.110).aspx

我觉得你认为这会做出你认为应该做的事情。

相关问题