Пример #1
0
        /// <summary>
        /// 导出文件夹及递归其下所有文件、文件夹
        /// </summary>
        private void ExportFolder(FNodeX file, string savePath)
        {
            var path = FileHelper.ConnectPath(savePath, file.Directory, file.IsDelete ? "Del_" + file.FileName : file.FileName);

            //1.1创建文件夹
            FileHelper.CreateDirectory(path);
            var creatime = BaseTypeExtension.ToSafeDateTime(file.Source.CreateTime);

            if (creatime != null)
            {
                Directory.SetCreationTime(path, (DateTime)creatime);
            }
            var accessTime = BaseTypeExtension.ToSafeDateTime(file.Source.LastAccessTime);

            if (accessTime != null)
            {
                Directory.SetLastAccessTime(path, (DateTime)accessTime);
            }

            var modifyTime = BaseTypeExtension.ToSafeDateTime(file.Source.ModifyTime);

            if (modifyTime != null)
            {
                Directory.SetLastWriteTime(path, (DateTime)modifyTime);
            }
        }
Пример #2
0
        /// <summary>
        /// 导出单个文件到指定目录
        /// isCover是否覆盖已存在的文件,默认不覆盖
        /// </summary>
        private string ExportFile(FNodeX file, string savePath, bool persistRelativePath = true, bool isMedia = false, bool isCover = false)
        {
            var path = string.Empty;

            if (persistRelativePath)
            {
                path = FileHelper.ConnectPath(savePath, file.Directory.ToSafeString(), (isMedia && file.IsDelete) ? "Del_" + file.FileName : file.FileName);
            }
            else
            {
                path = FileHelper.ConnectPath(savePath, (isMedia && file.IsDelete) ? "Del_" + file.FileName : file.FileName);
            }

            if (!file.IsFolder)
            {
                path = path.TrimEnd('\\');
            }
            if (!isCover && File.Exists(path))
            {
                return(path);
            }

            Directory.CreateDirectory(FileHelper.GetFilePath(path));

            RecoveryFile(file, path);

            //Asyn?.Advance(0, string.Format(LanguageManager.Current[Languagekeys.FileServiceLanguage_File_WenJianHuiFuChengGong], file.FullPath.TrimEnd(@"\")));

            var creatime = BaseTypeExtension.ToSafeDateTime(file.Source.CreateTime);

            if (creatime != null)
            {
                File.SetCreationTime(path, (DateTime)creatime);
            }
            var accessTime = BaseTypeExtension.ToSafeDateTime(file.Source.LastAccessTime);

            if (accessTime != null)
            {
                File.SetLastAccessTime(path, (DateTime)accessTime);
            }

            var modifyTime = BaseTypeExtension.ToSafeDateTime(file.Source.ModifyTime);

            if (modifyTime != null)
            {
                File.SetLastWriteTime(path, (DateTime)modifyTime);
            }

            return(path);
        }
Пример #3
0
        /// <summary>
        /// 导出单个文件到指定目录
        /// isCover是否覆盖已存在的文件,默认不覆盖
        /// </summary>
        private void ExportFile(FNodeX file, string savePath, bool isMedia = false, bool isCover = false)
        {
            var path = FileHelper.ConnectPath(savePath, file.Directory.ToSafeString(),
                                              (isMedia && file.IsDelete) ? "Del_" + file.FileName : file.FileName);

            if (!file.IsFolder)
            {
                path = path.TrimEnd('\\');
            }
            if (!isCover && File.Exists(path))
            {
                return;
            }
            const int t = 500 * 1024 * 1024;

            if (file.Size > t)
            {
                return;
            }
            Directory.CreateDirectory(FileHelper.GetFilePath(path));

            RecoveryFile(file, path);

            Asyn?.Advance(0, string.Format(LanguageHelperSingle.Instance.GetLanguageByKey(Languagekeys.FileServiceLanguage_File_WenJianHuiFuChengGong), file.FullPath.TrimEnd(@"\")));

            var creatime = BaseTypeExtension.ToSafeDateTime(file.Source.CreateTime);

            if (creatime != null)
            {
                File.SetCreationTime(path, (DateTime)creatime);
            }
            var accessTime = BaseTypeExtension.ToSafeDateTime(file.Source.LastAccessTime);

            if (accessTime != null)
            {
                File.SetLastAccessTime(path, (DateTime)accessTime);
            }

            var modifyTime = BaseTypeExtension.ToSafeDateTime(file.Source.ModifyTime);

            if (modifyTime != null)
            {
                File.SetLastWriteTime(path, (DateTime)modifyTime);
            }
        }
        protected override List <FileBrowingNode> DoGetChildNodes(FileBrowingNode parentNode)
        {
            if (parentNode.NodeType == FileBrowingNodeType.Root)
            {//根节点,获取分区列表
                List <FileBrowingNode> list = new List <FileBrowingNode>();

                foreach (var part in FileServiceX.Device.Parts)
                {
                    list.Add(new AndroidMirrorFileBrowingNode()
                    {
                        Name     = part.VolName.IsValid() ? string.Format("{0}-{1}", part.Name, part.VolName) : part.Name,
                        NodeType = FileBrowingNodeType.Partition,
                        Part     = part,
                        Parent   = parentNode,
                    });
                }

                return(list);
            }
            else if (parentNode.NodeType == FileBrowingNodeType.Partition)
            {//分区,扫描分区
                var mPnode = parentNode as AndroidMirrorFileBrowingNode;
                if (null == mPnode.ChildNodes)
                {
                    mPnode.ChildNodes = new List <FileBrowingNode>();

                    foreach (var node in FileServiceX.GetFileSystemByDir(mPnode.Part))
                    {
                        mPnode.ChildNodes.Add(new AndroidMirrorFileBrowingNode()
                        {
                            Name           = node.FileName,
                            FileSize       = node.Size,
                            NodeType       = node.IsFolder ? FileBrowingNodeType.Directory : FileBrowingNodeType.File,
                            NodeState      = node.IsDelete ? EnumDataState.Deleted : EnumDataState.Normal,
                            CreateTime     = BaseTypeExtension.ToSafeDateTime(node.Source.CreateTime),
                            LastWriteTime  = BaseTypeExtension.ToSafeDateTime(node.Source.ModifyTime),
                            LastAccessTime = BaseTypeExtension.ToSafeDateTime(node.Source.LastAccessTime),
                            Parent         = parentNode,
                            Part           = mPnode.Part,
                            FNode          = node,
                        });
                    }
                }

                return(mPnode.ChildNodes);
            }
            else if (parentNode.NodeType == FileBrowingNodeType.Directory)
            {//文件夹 扫描文件节点
                var mPnode = parentNode as AndroidMirrorFileBrowingNode;
                if (null == mPnode.ChildNodes)
                {
                    mPnode.ChildNodes = new List <FileBrowingNode>();

                    foreach (var node in FileServiceX.GetFileSystemByDir(mPnode.FNode))
                    {
                        mPnode.ChildNodes.Add(new AndroidMirrorFileBrowingNode()
                        {
                            Name           = node.FileName,
                            FileSize       = node.Size,
                            NodeType       = node.IsFolder ? FileBrowingNodeType.Directory : FileBrowingNodeType.File,
                            CreateTime     = BaseTypeExtension.ToSafeDateTime(node.Source.CreateTime),
                            LastWriteTime  = BaseTypeExtension.ToSafeDateTime(node.Source.ModifyTime),
                            LastAccessTime = BaseTypeExtension.ToSafeDateTime(node.Source.LastAccessTime),
                            Parent         = parentNode,
                            Part           = mPnode.Part,
                            FNode          = node,
                        });
                    }
                }

                return(mPnode.ChildNodes);
            }
            else
            {
                return(null);
            }
        }