Exemple #1
0
        private List <FileBrowingNode> GetIOSFileSystem(string folderPath, FileBrowingNode parentNode)
        {
            List <FileBrowingNode> list = new List <FileBrowingNode>();

            try
            {
                // 1,设置服务
                uint result = IOSDeviceCoreDll.SetIphoneFileService(IPhone.ID, IPhone.IsRoot);
                if (0 != result)
                {
                    return(list);
                }

                IntPtr allFileInfosInDir = IntPtr.Zero;
                result = IOSDeviceCoreDll.GetIphoneALLFileInfosInDir(IPhone.ID, folderPath, ref allFileInfosInDir);
                if (result != 0 || allFileInfosInDir == IntPtr.Zero)
                {
                    return(list);
                }

                //它返回的当前文件下的第一级文件系统,其中可能包括文件和文件夹。
                IosFileSystemList iosFileSystemlist = allFileInfosInDir.ToStruct <IosFileSystemList>();
                IntPtr            fileSysNodes      = iosFileSystemlist.FileSystemNodes;

                IosFileSystem iosFileSystem;
                //读取每一个文件系统实体。根据FileSystemList大小,一次解析一个文件系统,根据Type判断是文件还是文件夹。
                for (int i = 0; i < iosFileSystemlist.Length && fileSysNodes != IntPtr.Zero; i++)
                {
                    iosFileSystem = fileSysNodes.ToStruct <IosFileSystem>();

                    string name = iosFileSystem.Name.ToAnsiString();
                    //掉过掉Unix特有的隐藏文件“.”和"..",他们两个的作用是前进和后退。
                    if (name != "." && name != "..")
                    {
                        list.Add(new IOSDeviceFileBrowingNode()
                        {
                            Name       = name,
                            SourcePath = string.Format("{0}/{1}", folderPath.TrimStart('/'), name),
                            FileSize   = iosFileSystem.Size,
                            CreateTime = DynamicConvert.ToSafeDateTime(iosFileSystem.CreateTime),
                            NodeType   = iosFileSystem.Type == 1 ? FileBrowingNodeType.Directory : FileBrowingNodeType.File,
                            Parent     = parentNode,
                        });
                    }

                    fileSysNodes = fileSysNodes.Increment <IosFileSystem>();
                }
            }
            catch
            {
            }
            finally
            {
                // 3,关闭服务
                IOSDeviceCoreDll.CloseIphoneFileService(IPhone.ID);
            }

            return(list);
        }
Exemple #2
0
        protected override string DownLoadFile(FileBrowingNode fileNode, string savePath, bool persistRelativePath, CancellationTokenSource cancellationTokenSource, FileBrowingIAsyncTaskProgress async)
        {
            FileHelper.CreateDirectory(savePath);

            var ifileNode = fileNode as IOSDeviceFileBrowingNode;

            try
            {
                var tSavePath = string.Empty;
                if (persistRelativePath)
                {
                    tSavePath = Path.Combine(savePath, ifileNode.SourcePath).Replace('/', '\\');
                }
                else
                {
                    tSavePath = Path.Combine(savePath, ifileNode.Name).Replace('/', '\\');
                }

                if (FileHelper.IsValid(tSavePath))
                {
                    return(tSavePath);
                }

                FileHelper.CreateDirectory(FileHelper.GetFilePath(tSavePath));

                // 1,设置服务
                uint result = IOSDeviceCoreDll.SetIphoneFileService(IPhone.ID, IPhone.IsRoot);

                // 2,下载
                result = IOSDeviceCoreDll.CopyOneIosFile(IPhone.ID, ifileNode.SourcePath, tSavePath);

                return(tSavePath);
            }
            catch
            {
            }
            finally
            {
                // 3,关闭服务
                IOSDeviceCoreDll.CloseIphoneFileService(IPhone.ID);
            }

            return(null);
        }