我很抱歉成为那些只是提问的人之一,但是在我对这门语言做得更好之前我无法做更多的事情。
我试图为我的一个玩这个游戏的朋友制作一个程序。我个人不会玩很多,但是他在服务器上的工作人员,并说他使用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);
答案 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
我觉得你认为这会做出你认为应该做的事情。