0

ファイルを1行ずつ読み込もうとしていますが、これは完全に機能しますが、取得した結果をリストビューのサブアイテムに分けたいと考えています。

また、フォルダー内のすべての .jar ファイルを検索しているので、それらを名前として使用できます (最初の列)。2 列目には「バージョン」、3 列目には「作成者」、4 列目には「説明」が必要です。

jar ファイル内から受け取ったテキスト ファイルの 1 つを次に示します。

name: AFK  
main: com.github.alesvojta.AFK.AFK  
version: 2.0.5  
author: Ales Vojta / schneckk  
description: Provides AFK messages  
website: http://dev.bukkit.org/server-mods/afk/  

commands:  
    afk:  
        description: Provides AFK message when player types /afk.  
        usage: /<command>

これは私が今持っているコードです:

private List<string> GetInstalledPlugins()
    {
        List<string> list = new List<string>();
        lvInstalledPlugins.Items.Clear();
        if (!Directory.Exists(Environment.CurrentDirectory + "\\plugins"))
        {
            Directory.CreateDirectory(Environment.CurrentDirectory + "\\plugins");
            DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory + "\\plugins");
            FileInfo[] fileInfo = di.GetFiles("*.jar");
            foreach (var info in fileInfo)
            {
                //lvInstalledPlugins.Items.Add(info.Name);
                list.Add(info.Name);
            }
        }
        else
        {
            DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory + "\\plugins");
            FileInfo[] fileInfo = di.GetFiles("*.jar");
            foreach (var info in fileInfo)
            {
                //lvInstalledPlugins.Items.Add(info.Name);
                list.Add(info.Name);
            }
        }
        return list;
    }

private void test(IEnumerable<string> list)
    {
        List<ListViewItem> PluginList = new List<ListViewItem>();
        var items = new string[4];
        try
        {
            foreach (var ListItem in list)
            {
                Console.WriteLine(ListItem);
                var name = Environment.CurrentDirectory + "\\plugins\\" + ListItem;
                var zip = new ZipInputStream(File.OpenRead(name));
                var filestream = new FileStream(name, FileMode.Open, FileAccess.Read);
                var zipfile = new ZipFile(filestream);
                ZipEntry item;
                while ((item = zip.GetNextEntry()) != null)
                {
                    if (item.Name == "plugin.yml")
                    {
                        using (var s = new StreamReader(zipfile.GetInputStream(item)))
                        {
                            string line;
                            while ((line = s.ReadLine()) != null)
                            {
                                if (line.Contains("name"))
                                {
                                    items[0] = line;
                                }
                                if (line.Contains("version"))
                                {
                                    items[1] = line;
                                }
                                if (line.Contains("author"))
                                {
                                    items[2] = line;
                                }
                                if (line.Contains("description"))
                                {
                                    items[3] = line;
                                }
                                try
                                {
                                    var lvitem = new ListViewItem(items);
                                    lvitem.Name = items[0];
                                    lvitem.Text = items[0];
                                    lvitem.SubItems.Add(items[1]);
                                    lvitem.SubItems.Add(items[2]);
                                    lvitem.SubItems.Add(items[3]);
                                    PluginList.Add(lvitem);
                                }
                                catch (Exception)
                                {

                                }
                            }
                            lvInstalledPlugins.Items.AddRange(PluginList.ToArray());
                        }
                    }
                }
            }

これはうまくいかないようです:/、何かアイデアはありますか? 私は一日中これに取り組んできましたが、うまくいかないようです:(。

4

1 に答える 1

0

質問の正確な内容はわかりませんが、タイトルからすると、以下の質問への回答が参考になるかもしれません。

C# listView、列 2、3、4 などに項目を追加するにはどうすればよいですか?

于 2012-07-20T03:18:09.350 に答える