public SharedDirectory GetNetworkDisk(string clientUserID, string netDiskID, string dirPath) { var rootPath = this.networkDiskPathManager.GetNetworkDiskRootPath(clientUserID, netDiskID); if (rootPath == null) { return(null); } var iniDirName = this.networkDiskPathManager.GetNetworkDiskIniDirName(clientUserID, netDiskID); var diskRpotDir = rootPath + "\\" + iniDirName + "\\"; if (!Directory.Exists(diskRpotDir)) { Directory.CreateDirectory(diskRpotDir); } if (dirPath == null) { var dir = new SharedDirectory(); var disk = new DiskDrive(); disk.Name = iniDirName; disk.TotalSize = this.networkDiskPathManager.GetNetworkDiskTotalSize(clientUserID, netDiskID); disk.AvailableFreeSpace = disk.TotalSize - this.networkDiskPathManager.GetNetworkDiskSizeUsed(clientUserID, netDiskID); dir.DriveList.Add(disk); return(dir); } return(SharedDirectory.GetSharedDirectory(rootPath + dirPath)); }
public SharedDirectory GetNetworkDisk(string userID, string dirPath) { string rootPath = this.networkDiskPathManager.GetNetworkDiskRootPath(userID); if (rootPath == null) { return(null); } if (!Directory.Exists(rootPath + userID)) { Directory.CreateDirectory(rootPath + userID); } if (dirPath == null) { SharedDirectory dir = new SharedDirectory(); DiskDrive disk = new DiskDrive(); disk.Name = userID; disk.TotalSize = this.networkDiskPathManager.GetNetworkDiskTotalSize(userID); disk.AvailableFreeSpace = disk.TotalSize - this.networkDiskPathManager.GetNetworkDiskSizeUsed(userID); dir.DriveList.Add(disk); return(dir); } return(SharedDirectory.GetSharedDirectory(rootPath + dirPath)); }
public byte[] HandleQuery(string sourceUserID, int informationType, byte[] info) { #region ReqDirectory if (informationType == this.fileDirectoryInfoTypes.ReqDirectory) { ReqDirectoryContract contract = CompactPropertySerializer.Default.Deserialize <ReqDirectoryContract>(info, 0); string fullPath = this.ConstructFullPath(contract.DirectoryPath); SharedDirectory dir = SharedDirectory.GetSharedDirectory(fullPath); return(CompactPropertySerializer.Default.Serialize <ResDirectoryContract>(new ResDirectoryContract(dir))); } #endregion #region Rename if (informationType == this.fileDirectoryInfoTypes.Rename) { RenameContract contract = CompactPropertySerializer.Default.Deserialize <RenameContract>(info, 0); string fullPath = this.ConstructFullPath(contract.ParentDirectoryPath); try { if (contract.IsFile) { File.Move(fullPath + contract.OldName, fullPath + contract.NewName); } else { Directory.Move(fullPath + contract.OldName, fullPath + contract.NewName); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract()));; } catch (Exception ee) { string error = ""; if (ee is IOException) { error = string.Format("{0} 正在被使用!", Path.GetFileName(contract.OldName)); } else { error = ee.Message; } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract(error)));; } } #endregion #region DownloadFile if (informationType == this.fileDirectoryInfoTypes.Download) { DownloadContract contract = CompactPropertySerializer.Default.Deserialize <DownloadContract>(info, 0); string fullPath = this.ConstructFullPath(contract.SourceRemotePath); if (contract.IsFile) { try { FileStream stream = File.OpenRead(fullPath); stream.Close(); stream.Dispose(); } catch (Exception ee) { string error = ""; if (ee is FileNotFoundException) { error = string.Format("{0} 不存在或已经被删除!", Path.GetFileName(fullPath)); } else if (ee is IOException) { error = string.Format("{0} 正在被其它进程占用!", Path.GetFileName(fullPath)); } else { error = ee.Message; } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract(error))); } } else { if (!Directory.Exists(fullPath)) { string error = string.Format("{0} 不存在或已经被删除!", Path.GetFileName(fullPath)); return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract(error))); } } string fileID = null; this.fileOutter.BeginSendFile(sourceUserID, fullPath, Comment4NDisk.BuildComment(contract.SaveLocalPath, contract.NetDiskID), out fileID); return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract()));; } #endregion #region DeleteFileOrDirectory if (informationType == this.fileDirectoryInfoTypes.Delete) { OperationResultConatract resultContract = new OperationResultConatract(); try { DeleteContract contract = CompactPropertySerializer.Default.Deserialize <DeleteContract>(info, 0); string fullPath = this.ConstructFullPath(contract.SourceParentDirectoryPath); if (contract.FilesBeDeleted != null) { foreach (string fileName in contract.FilesBeDeleted) { string filePath = fullPath + fileName; if (File.Exists(filePath)) { File.Delete(filePath); } } } if (contract.DirectoriesBeDeleted != null) { foreach (string dirName in contract.DirectoriesBeDeleted) { string dirPath = fullPath + dirName + "\\"; if (Directory.Exists(dirPath)) { FileHelper.DeleteDirectory(dirPath); } } } } catch (Exception ee) { resultContract = new OperationResultConatract(ee.Message); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(resultContract)); } #endregion #region CopyFileOrDirectory if (informationType == this.fileDirectoryInfoTypes.Copy) { OperationResultConatract resultContract = new OperationResultConatract(); try { CopyContract contract = CompactPropertySerializer.Default.Deserialize <CopyContract>(info, 0); FileHelper.Copy(this.ConstructFullPath(contract.SourceParentDirectoryPath), contract.FilesBeCopyed, contract.DirectoriesBeCopyed, this.ConstructFullPath(contract.DestParentDirectoryPath)); } catch (Exception ee) { resultContract = new OperationResultConatract(ee.Message); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(resultContract)); } #endregion #region MoveFileOrDirectory if (informationType == this.fileDirectoryInfoTypes.Move) { OperationResultConatract resultContract = new OperationResultConatract(); try { MoveContract contract = CompactPropertySerializer.Default.Deserialize <MoveContract>(info, 0); FileHelper.Move(this.ConstructFullPath(contract.OldParentDirectoryPath), contract.FilesBeMoved, contract.DirectoriesBeMoved, this.ConstructFullPath(contract.NewParentDirectoryPath)); } catch (Exception ee) { resultContract = new OperationResultConatract(ee.Message); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(resultContract)); } #endregion return(null); }