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