tirisus
Messages postés5Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 6 septembre 2007
-
26 août 2007 à 00:07
tirisus
Messages postés5Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 6 septembre 2007
-
30 août 2007 à 15:49
Bonsoir a tous voila je souhaite telecharger via ftp tout les fichiers d'un dossier
j'arrive a lister les fichier dans un arraylist dans un tableau de string mais quand je regarde ce qu'il mais dans le tableau : il met les droit l'utilisateur la date et enfin le nom du fichier
et je souhaiterais optenir SEULEMENT LE NOM DU FICHIER QUELQUN AURAIS UNE SOLUTION?
voici mon bout de code pour que vous y voyez plus clair
ArrayList fichiers = new ArrayList();
lfichiers = new string[200];
fichiers = ftplib.List();
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 26 août 2007 à 09:19
Salut,
Une ArrayList est collection non-typée. Si tu dois y mettre uniquement des strucs, utilises donc une List<string> (.NET 2) pour dérive de CollectionBase (.NET 1).
Ensuite, il faudrait savoir ce que fais (et retourne) ftplib.List(); parce que sinon on pourra pas t'aider. De quel type est cet object?
ricklekebekoi
Messages postés303Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention24 avril 20095 27 août 2007 à 06:17
1. Pourquoi partir d'une liste et le trasnférer dans un tableau de string de taille fixe ? Ici, si ton nombre d'élément dans ta liste dépasse 200, ton programme plante. Je te conseil de faire de lfichier un List<string> (using System.Collections.Generic;) si tu dispose de .Net 2, et ce seulement si le fait de transférer ta liste dans une autre liste est vraiment nécessaire.
2. ftplib contient surement des objets qu'il dépose dans une liste. Toi, lorsque tu fait lfichiers[cpt1] = fichier;, tu appel implicitement la fonction toString();. L'objet doit disposer d'une propriété FileName ou truc du genre, que tu pourrais aller chercher directement, du style lfichier[cpt1] = ((NomClasse)fichier).FileName;
3. A titre indicatif, la concaténation de chaine comme sa, c'est moche. MessageBox.Show(lfichiers[0]+"***" +lfichiers[1], "Button Clicked",MessageBoxButtons.OK, MessageBoxIcon.Exclamation); pourrait facilement s'écrire MessageBox.Show(String.Format("{0}***{1}",lfichiers[0],lfichiers[1]), "Button Clicked",MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Supposant que ftplib.List(); retourne une liste d'objet de type MaClasse comprenant une propriété FileName, voila l'alternetive complete que je te propose:
ArrayList fichiers = ftplib.List(); new ArrayList();
string lastname = "";
for( int i = 0; i < fichiers.Count; ++i )
{
string name = ((MaClasse)fichiers[i]).FileName;
MessageBox.Show(String.Format("{0}***{1}",lastname,name), "Button Clicked",MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
lastname = name;
ftplib.OpenDownload(name,chemin1 + "/Gestsource/" + name);
while (ftplib.DoDownload() > 0)
{
perc = (int)((ftplib.BytesTotal * 100) / ftplib.FileSize);
label1.Text = "Downloading: " + perc;
progressBar1.PerformStep();
}
}
Eric