Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
        }