public void LoadDirFilesToListView(string path, LoadFilesResult result = null) { this.BeginInvoke((MethodInvoker) delegate() { try { if (null == sftpChannel) { return; } ArrayList files = sftpChannel.ls(path); if (files != null) { ChannelSftp.LsEntry file = null; listView2.Items.Clear(); LargeImages.Images.Clear(); SmallImages.Images.Clear(); LargeImages.Images.Add(Properties.Resources.filen_64px); LargeImages.Images.Add(Properties.Resources.folder_64px); SmallImages.Images.Add(Properties.Resources.filen_16px); SmallImages.Images.Add(Properties.Resources.folder_16px); ListViewItem item = null; ListViewItem.ListViewSubItem subItem = null; List <ListViewItem> itemList = new List <ListViewItem>(); for (int i = 0; i < files.Count; i++) { object obj = files[i]; if (obj is ChannelSftp.LsEntry) { file = (ChannelSftp.LsEntry)obj; if (file.getFilename() == ".") { continue; } item = new ListViewItem(); item.Text = file.getFilename(); item.Tag = file; if (file.getFilename() != "..") { subItem = new ListViewItem.ListViewSubItem(); subItem.Text = Utils.getFileSize(file.getAttrs().getSize()); item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = file.getAttrs().isDir() ? "文件夹" : file.getAttrs().isLink() ? "快捷方式" : getFileExt(file.getFilename()); item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = file.getAttrs().getMtimeString(); item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = file.getAttrs().getPermissionsString(); item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = getFileOwner(file.getLongname()); item.SubItems.Add(subItem); item.ImageIndex = file.getAttrs().isDir() ? 1 : 0; if (file.getAttrs().isDir()) { listView2.Items.Add(item); } else { itemList.Add(item); } } else { subItem = new ListViewItem.ListViewSubItem(); subItem.Text = ""; item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = ""; item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = ""; item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = ""; item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = ""; item.SubItems.Add(subItem); item.ImageIndex = 1; listView2.Items.Add(item); } } } foreach (ListViewItem item2 in itemList) { listView2.Items.Add(item2); } if (null != result) { result(); } } else { MessageBox.Show(this, "目录不存在", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception e) { logger.Error("加载数据失败:" + e.Message, e); if (!success) { sftpForm.CloseTab(this); } } }); }
public void LoadDirFilesToListView(string path, LoadFilesResult result = null) { this.BeginInvoke((MethodInvoker) delegate() { try { DirectoryInfo dire = new DirectoryInfo(path); if (dire.Exists) { listView1.Items.Clear(); LargeImages.Images.Clear(); SmallImages.Images.Clear(); FileInfo[] files = dire.GetFiles(); DirectoryInfo[] dires = dire.GetDirectories(); Icon icon = null; ListViewItem item = null; ListViewItem.ListViewSubItem subItem = null; LargeImages.Images.Add(Properties.Resources.filen_64px); LargeImages.Images.Add(Properties.Resources.folder_64px); SmallImages.Images.Add(Properties.Resources.filen_16px); SmallImages.Images.Add(Properties.Resources.folder_16px); int index = 2; item = new ListViewItem(); item.Text = ".."; subItem = new ListViewItem.ListViewSubItem(); subItem.Text = ""; item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = "文件夹"; item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = ""; item.SubItems.Add(subItem); item.ImageIndex = 1; listView1.Items.Add(item); foreach (DirectoryInfo file in dires) { item = new ListViewItem(); item.Text = file.Name; item.Tag = file; subItem = new ListViewItem.ListViewSubItem(); subItem.Text = ""; item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = "文件夹"; item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = file.LastWriteTime.ToString("yyyy-MM-dd, HH:mm:ss"); item.SubItems.Add(subItem); item.ImageIndex = 1; listView1.Items.Add(item); //Console.WriteLine(file.Name + " - " + file.ToString()); } foreach (FileInfo file in files) { if (file.Extension == ".lnk") { continue; } icon = Icon.ExtractAssociatedIcon(file.FullName); LargeImages.Images.Add(icon.ToBitmap()); SmallImages.Images.Add(icon.ToBitmap()); item = new ListViewItem(); item.Text = file.Name; item.Tag = file; subItem = new ListViewItem.ListViewSubItem(); subItem.Text = Utils.getFileSize(file.Length); item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = file.Extension; item.SubItems.Add(subItem); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = file.LastWriteTime.ToString("yyyy-MM-dd, HH:mm:ss"); item.SubItems.Add(subItem); item.ImageIndex = index++; listView1.Items.Add(item); //Console.WriteLine(file.Name + " - " + file.ToString()); } if (null != result) { result(); } } else { MessageBox.Show(this, "目录不存在", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception e) { logger.Error("加载数据失败:" + e.Message, e); } }); }