/// <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); } }
/// <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); }
/// <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); } }