1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
public bool FtpDeleteDirectory(string dirPath)
{
Uri srvUri = new Uri("ftp://" + this.hostname + "/" + dirPath);
FtpWebRequest myRequest = initRequest(srvUri);
if (FtpListDetailsDirectory(dirPath) != "")
{
FtpInitializeRemoval(dirPath);
Console.WriteLine("dossier non vide");
}
myRequest.Method = WebRequestMethods.Ftp.RemoveDirectory;
return true;
}
private void FtpInitializeRemoval(string dirPath)
{
Uri srvUri = new Uri("ftp://" + this.hostname + "//");
initRequest(srvUri);
TreeNode initialNode;
TreeView tree = new TreeView();
string initialDir = dirPath;
tree.Nodes.Add(initialDir);
initialNode = tree.Nodes[0];
FtpDeleteContentDirectory(initialNode, tree);
}
private void FtpDeleteContentDirectory(TreeNode NodePass, TreeView tree)
{
string directory = NodePass.FullPath;
Uri servUri = new Uri("ftp://" + this.hostname + "/" + directory + "/");
try
{
// lecture en détails
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(servUri);
request.Credentials = new NetworkCredential(this.username, this.password);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string listBrute = reader.ReadToEnd();
string[] cut = { Environment.NewLine };
string[] dirListDetails = listBrute.Split(cut, StringSplitOptions.RemoveEmptyEntries);
reader.Close();
// lecture simple
FtpWebRequest request2 = (FtpWebRequest)FtpWebRequest.Create(servUri);
request2.Credentials = new NetworkCredential(this.username, this.password);
request2.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response2 = (FtpWebResponse)request2.GetResponse();
Stream responseStream2 = response2.GetResponseStream();
StreamReader reader2 = new StreamReader(responseStream2);
string listSimple = reader2.ReadToEnd();
string[] listNameDir = listSimple.Split(cut, StringSplitOptions.RemoveEmptyEntries);
reader2.Close();
for (int i = 0; i < dirListDetails.Length; i++)
{
foreach (string s in listNameDir)
{
if (dirListDetails[i].StartsWith("d") && dirListDetails[i].Contains(s))
{
TreeNode childNode = new TreeNode(new DirectoryInfo(s).Name);
NodePass.Nodes.Add(childNode);
//LocalManageDirectory(NodePass.FullPath + "\\" + Path.GetFileName(s));
FtpDeleteContentDirectory(childNode, tree);
}
else if (dirListDetails[i].StartsWith("-") && dirListDetails[i].Contains(s))
{
NodePass.Nodes.Add(s);
Console.WriteLine(NodePass.FullPath);
string test = NodePass.FullPath + "/" + s;
FtpDeleteFile(test);
string fullDirectory = NodePass.FullPath;
if (FtpListDetailsDirectory(fullDirectory) == "")
{
FtpDeleteDirectory(fullDirectory);
}
}
}
}
}
catch (WebException e)
{
throw new DirectoryNotFound(Path.GetFileName(directory), e);
}
catch (Exception)
{
throw new Exception();
}
} |
Partager