void RefreshRemote() { listViewRemote.Items.Clear(); List <string> Items = nfsClient.GetItemList(RemoteFolder); Items = RemoveDuplicatesAndInvalid(Items); Items.Insert(0, ".."); List <ListViewItem> ItemsList = new List <ListViewItem>(); foreach (string Item in Items) { NFSLibrary.Protocols.Commons.NFSAttributes nfsAttribute = nfsClient.GetItemAttributes(nfsClient.Combine(Item, RemoteFolder)); if (nfsAttribute != null) { if (nfsAttribute.NFSType == NFSLibrary.Protocols.Commons.NFSItemTypes.NFDIR) { ListViewItem lvi = new ListViewItem(new string[] { Item, nfsAttribute.Size.ToString(), nfsAttribute.CreateDateTime.ToString() }); lvi.ImageIndex = 1; ItemsList.Add(lvi); } else if (nfsAttribute.NFSType == NFSLibrary.Protocols.Commons.NFSItemTypes.NFREG) { ListViewItem lvi = new ListViewItem(new string[] { Item, nfsAttribute.Size.ToString(), nfsAttribute.CreateDateTime.ToString(), nfsAttribute.ModifiedDateTime.ToString(), nfsAttribute.LastAccessedDateTime.ToString() }); if (Item == "..") { continue; } lvi.ImageIndex = 0; ItemsList.Add(lvi); } } else { ListViewItem lvi = new ListViewItem(new string[] { Item, "", "" }); lvi.ImageIndex = 0; ItemsList.Add(lvi); } } List <ListViewItem> OrderedList = new List <ListViewItem>(); foreach (ListViewItem lvi in ItemsList) { if (lvi.Text == "..") { if (!OrderedList.Contains(lvi)) { OrderedList.Add(lvi); } break; } } foreach (ListViewItem lvi in ItemsList) { if (lvi.ImageIndex == 1 && lvi.Text != "..") { if (!OrderedList.Contains(lvi)) { OrderedList.Add(lvi); } } } foreach (ListViewItem lvi in ItemsList) { if (lvi.ImageIndex == 0) { if (!OrderedList.Contains(lvi)) { OrderedList.Add(lvi); } } } listViewRemote.Items.AddRange(OrderedList.ToArray()); }
public int CreateFile(string filename, System.IO.FileAccess access, System.IO.FileShare share, System.IO.FileMode mode, System.IO.FileOptions options, DokanFileInfo info) { int ret = DokanNet.DOKAN_SUCCESS; filename = CleanFileName(filename); try { Debug("CreateFile {0}", filename); string Directory = nfsClient.GetDirectoryName(filename); string FileName = nfsClient.GetFileName(filename); string FullPath = nfsClient.Combine(FileName, Directory); if (nfsClient.IsDirectory(FullPath)) { return(ret); } switch (mode) { case FileMode.Open: { Debug("Open"); if (!nfsClient.FileExists(FullPath)) { ret = -DokanNet.ERROR_FILE_NOT_FOUND; } break; } case FileMode.CreateNew: { Debug("CreateNew"); if (nfsClient.FileExists(FullPath)) { ret = -DokanNet.ERROR_ALREADY_EXISTS; } else { nfsClient.CreateFile(FullPath); } break; } case FileMode.Create: { Debug("Create"); if (nfsClient.FileExists(FullPath)) { nfsClient.DeleteFile(FullPath); } nfsClient.CreateFile(FullPath); break; } case FileMode.OpenOrCreate: { Debug("OpenOrCreate"); if (!nfsClient.FileExists(FullPath)) { nfsClient.CreateFile(FullPath); } break; } case FileMode.Truncate: { Debug("Truncate"); if (!nfsClient.FileExists(FullPath)) { ret = -DokanNet.ERROR_FILE_NOT_FOUND; } else { nfsClient.CreateFile(FullPath); } break; } case FileMode.Append: { Debug("Appen"); if (!nfsClient.FileExists(FullPath)) { ret = -DokanNet.ERROR_FILE_NOT_FOUND; } break; } default: { Debug("Error unknown FileMode {0}", mode); break; } } } catch (Exception ex) { ret = -DokanNet.DOKAN_ERROR; Debug("CreateFile file {0} exception {1}", filename, ex.Message); } return(ret); }