Zum Inhalt springen

FTP komplett downloaden Csharp


swonson

Empfohlene Beiträge

Vorweg: Die boolsche variable 'treffer' ist ausschließlich um zu zeigen ob der jeweilige Pfad schon vorhanden ist also ob das programm schond rinne war.

Der rest ist hoffentlich klar... Wenn nicht bitte fragen.

                

while (!reader.EndOfStream)

                {

                    StreamReader Liste_reader = new StreamReader(sFilename, System.Text.Encoding.Default);

                    sort = reader.ReadLine();

                    if (sort.StartsWith("d"))

                    {

Durchsuche den FTP-Stream solange bis du am ende angekommen bist. Öffne dann die datei die als URL_liste dient. Lese eine Zeile ein und speicher sie in 'sort'. Wenn ie eingelesene Zeile mit einem 'd' (weil es dann ein ordner ist) beginnt gehe dann tue folgendes...

 words_dir = sort.Split(' ');

                        string FTP3 = FTPAddress + "/" + words_dir[words_dir.Length - 1];

Splitte die eingelesen Zeile bei jedem Leerzeichen. Speichere den FTP-Adresspfad und den Gefunden ordnernamen is 'FTP3' ab.

while (!Liste_reader.EndOfStream && words_dir[words_dir.Length - 1] != "." && words_dir[words_dir.Length - 1] != "..")

                        {

                            if (FTP3 == Liste_reader.ReadLine())

                            {

                                treffer = true;

                                break;

                            }

                        }


Arbeite folgende schleife ab bis du am Ende der URL-list-datei bist und der Gefunden ordnernamen nicht mit einem '.' oder '..' beginnt. Wenn die Variable 'FTP3' bereits in dem Textdokument steht, dann setze die Variable 'treffer' auf true und breche die Schleife ab.

if (!treffer)

                        {

                            if (words_dir[words_dir.Length - 1] != "." && words_dir[words_dir.Length - 1] != "..")

                            {

                                Liste_reader.Close();

                                // Hier der ganze Code zur Verzeichnis-Bearbeitung

                                al.alarr(FTPAddress + "/" + words_dir[words_dir.Length - 1]);

                                FTP2 = FTPAddress + "/" + words_dir[words_dir.Length - 1];

                                reader.Close();

                                responseStream.Close();

                                response.Close();

                                GetDir(FTP2, User, Pw, pfad);


                            }

                        }

Wenn 'treffer' true ist dann tue folgendes... Wenn der gefundene Ordnernamen nicht '.' oder '..' ist dann tue folgendes... Schließe die oben geöffnete URL-list datei... Gehe in die Klasse 'alclass' und übergebe zugewiesene Variablen. Die Klasse 'alclass' schreibt den pfad + ordnernamen in die URL-Listdatei. Speichere den FTP-adress-pfad und den Ordnernamen in 'FTP2' ab. Schließe die FTP connecten und Rufe die Klasse 'GetDir' mit dem neuen Pfad der den neuen ordner enthällt auf. Sodass wir im neuen ordner sind.

}

                    else if (sort.StartsWith("-"))

                    {

                        words = sort.Split(' ');

                        treffer = false;


Falls kein ordner sondern eine Datei gefunden wurde also die Variable 'sort' mit einem '-' beginnt dann splitte die information und setzte die Variable 'treffer' auf true.

string FTP3 = FTPAddress + "/" + words[words.Length - 1];


                        while (!Liste_reader.EndOfStream)

                        {

                            if (FTP3 == Liste_reader.ReadLine())

                            {

                                treffer = true;

                                break;

                            }

                        }

Speichere den FTP-adresspfad und den Dateinamen in die variable 'FTP3'. tue dann solange folgendes bis die datei mit den URL's am ende ist. ist der Wert von 'FTP3' bereits in der Dateo vorhanerden dann setze die variable 'treffer' auf true und breche die schleife ab.

                        if (!treffer)

                        {

                            Liste_reader.Close();

                            al.alarr(FTPAddress + "/" + words[words.Length - 1]);

                        }

                    }

                    Liste_reader.Close();

Wenn 'treffer' false ist, dann schließe die URL-lst und rufe die Klasse 'alclass' mit den zugewiesenen Variablen auf. Schließe die datei falls sie offen ist.

reader.Close();

                responseStream.Close();

                response.Close();

Schließe die verbindung mit dem FTP.

 if(FTP2!= "")

                {

                    //MessageBox.Show("If FTP2 wurde geladen!");

                    goback = FTP2.Split('/');

                    back = FTP2.Replace("/" + goback[goback.Length - 1], "");

                    GetDir(back, User, Pw, pfad);

                }

Wenn in 'FTP2' etwas drinne ist, dann splitte den pfad auf 'FTP2' und speiche die teile in goback.

Speichere den neuen Pfad, in dem der letzte ordner fehlt ab und rufe die Funktion 'GetDir' mit den zugewisenen Variablen auf.

Nun ist er einen Ordner zuvor und geht wieder in den gleich ordner, da er der erste ist.

Ich verstehe nicht wie ich das anders lösen kann. Wenn ich die Funktion mit dem Original FTP-Pfad aufrufe bin ich dich wieder ganz am anfang und das ist doch falsch oder?

Bitte erklärt es mir. Ich weiß es ist anstrengend und zeit ista bestimmt auch mangelware... aber mir ist es echt wichtig... Auch wenn es nicht so scheint, in der regel begreife ich auch recht schnell...

Ich danke euch für die Hilfe bisher und hoffe es geht so weiter...

Danke und liebe Grüße von Swonson

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du hast jetzt beschreiben, welche Logik dein Code darstellt. Diese Logik ist aber offensichtlich falsch (sonst würde der Code ja funktionieren). Du hast auch nur beschrieben, was passiert, nicht warum.

Ich wollte eigentlich, dass du die Logik deines Algorithmus' schilderst, der zu diesem Code geführt hat. Ich möchte herausfinden, ob dein Algorithmus falsch ist, oder ob erst bei der Umsetzung in Code etwas schiefgelaufen ist.

Du brauchst keine Liste der schon besuchten Verzeichnisse. Du musst auch nicht "zurückgehen". Bitte wirf das raus!

Die Vorgehensweise mit Rekursion ist eigentlich ganz einfach (Pseudocode):


Function getdir( path )
For each x in readdir( path )
if x is dir and x != "." and x != ".." then getdir( path + x )
if x is file then getfile( path + x)
Next[/code]

Mehr ist nicht notwendig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstmal danke für den Code, ich werde ihn gleich anbauen und schaun ob es den sinn erfüllt. ich denke zwar, dass er das nicht tut, aber ich versuche es. Ich denke, dass der Code von dir wieder nur den ersten Ordner nimmt...

Mein Gedanke für diesen Code war ein kompletter FTP spiegel. Ich wollte das mein Code Das root VZ scannd und alles abspeichert was er sieht. Dann sollte er in den ersten ordner und das selbe tun... Das solltre sich wiederholen bis er am ende angekommen ist. Als nächtes soll er eine eben zurück gehen und den nächsten ordner auswählen und das gleich tun... Das soll er solange machen bis ich alle datei + ordnerstruktur vorliegen habe.

War diese aussage ausreichend? wenn nicht, bitte fragen...

lg swonson

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mein Code müsste nun so aussehen oder?


                foreach (String x in reader.ReadLine())

                {

                    if(x.StartsWith("d"))

                    {

                        words_dir = sort.Split(' ');

                        string Path = FTPAddress + "/" + words_dir[words_dir.Length - 1];

                        al.alarr(Path);

                        GetDir(Path,User,Pw);

                    }

                    else if(x.StartsWith("-"))

                    {

                        words = sort.Split(' ');

                        al.alarr(FTPAddress + "/" + words[words.Length - 1]);

                    }

                }

Es konnt ein fehler oben in der foreachbedingung:

Eine Konvertierung vom Typ 'Char' in 'string ist nicht möglich.

Kann mir jemand sagen, Wie ich den fehler weg bekomme ? ich dachte so müsste ich es machen. ?!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mein Gedanke für diesen Code war ein kompletter FTP spiegel. Ich wollte das mein Code Das root VZ scannd und alles abspeichert was er sieht. Dann sollte er in den ersten ordner und das selbe tun... Das solltre sich wiederholen bis er am ende angekommen ist.

Als nächtes soll er eine eben zurück gehen und den nächsten ordner auswählen und das gleich tun... Das soll er solange machen bis ich alle datei + ordnerstruktur vorliegen habe.

Da steht jetzt aber nichts von einer URL-Liste oder einer Treffer-Variablen. Das ist nicht der Algorithmus, den du umgesetzt hast.

Mein Code müsste nun so aussehen oder?
ReadLine liefert dir einen einzigen String, mit foreach bekommst du dann die einzelnen Zeichen, das kann so nicht funktionieren.

Deine Schleife zum Einlesen des Verzeichnisinhalts solltest du schon so lassen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die treffer variable und die list waren ein versuch es einfacher zu machen weil es jedes mal wieder ein kleine problem gelöst hat und ich ein stück weiter kam.

Am anfang war es so gedacht, das er sofort alles downloadet was er sieht und zwa ohne list etc...

ich raffs nicht mein code sieht wieder so aus


                while (!reader.EndOfStream)

                {

                    sort = reader.ReadLine();

                    if (sort.StartsWith("d"))

                    {

                        words_dir = sort.Split(' ');

                        if (words_dir[words_dir.Length - 1] != "." && words_dir[words_dir.Length - 1] != "..")

                        {

                            string Path = FTPAddress + "/" + words_dir[words_dir.Length - 1];

                            al.alarr(FTPAddress + "/" + words_dir[words_dir.Length - 1]);

                            reader.Close();

                            responseStream.Close();

                            response.Close();

                            GetDir(Path, User, Pw);

                        }

                    }

                    else if (sort.StartsWith("-"))

                    {

                        words = sort.Split(' ');

                        al.alarr(FTPAddress + "/" + words[words.Length - 1]);

                    }

                }

Und meine ausgabe ist die gleiche, er bleibt im letzten verzeichnis hängen.

Wie passt die foreachschleife rein? kannst du es mit bitte erklären was ich falsch mache? ich weiß es ist amstrengend, aber ich verstehs wirklich nicht -.-

danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und meine ausgabe ist die gleiche, er bleibt im letzten verzeichnis hängen.
Zeig doch bitte nicht immer nur diesen Ausschnitt, sondern die ganze Funktion. Ich kann nicht erkennen, wo und wie da die ganzen Variablen deklariert sind, das wäre aber extrem wichtig.

Wo lädst du die Dateien herunter? Und was genau macht dieses "al.alarr"?

Warum schließt du den Reader, nachdem du ein Unterverzeichnis gefunden hast?

Wie passt die foreachschleife rein?
Das sollte nur Pseudocode sein, das sollte nicht heißen, dass du eine foreach-Schleife benutzen sollst. Ich wollte nur die Struktur des Codes verdeutlichen.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay es tut mir leid, dass ich unreichend infos erbracht habe.

Form 1:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;


namespace WindowsFormsApplication3

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        initDir ordner = new initDir();


        private void Load_tb_Click(object sender, EventArgs e)

        {

            string Ftp_orig = FTPserver_tb.Text;

            string Ftp = FTPserver_tb.Text;

            string User = User_tb.Text;

            string Pw = Pw_tb.Text;


            ordner.GetDir(Ftp, User, Pw);

            MessageBox.Show("Ende");

        }

    }

}


initDir: (Diese Funktion connectet und sortiert nach ordner und files, also die funktion um die es die ganze zeit ging)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Net;

using System.Collections;


namespace WindowsFormsApplication3

{

    class initDir

    {

        Testftp.alclass al = new Testftp.alclass();

        string sort;

        string[] words_dir;

        string[] words;

        string FTP2;

        bool treffer = false;

        string sFilename = @"C:\Users\Swonson\Desktop\Testftp\Testftp\Testftp\download\Liste.txt";


        public void GetDir(string FTPAddress, string User, string Pw)

        {

            try

            {

                FtpWebRequest request = FtpWebRequest.Create(FTPAddress) as FtpWebRequest;


                request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

                request.Credentials = new NetworkCredential(User, Pw);

                request.UsePassive = true;

                request.UseBinary = true;

                request.KeepAlive = true;


                FtpWebResponse response = request.GetResponse() as FtpWebResponse;

                Stream responseStream = response.GetResponseStream();

                StreamReader reader = new StreamReader(responseStream);



                while (!reader.EndOfStream)

                {

                    sort = reader.ReadLine();

                    if (sort.StartsWith("d"))

                    {

                        words_dir = sort.Split(' ');

                        if (words_dir[words_dir.Length - 1] != "." && words_dir[words_dir.Length - 1] != "..")

                        {

                            string Path = FTPAddress + "/" + words_dir[words_dir.Length - 1];

                            al.alarr(FTPAddress + "/" + words_dir[words_dir.Length - 1]);

                            reader.Close();

                            responseStream.Close();

                            response.Close();

                            GetDir(Path, User, Pw);

                        }

                    }

                    else if (sort.StartsWith("-"))

                    {

                        words = sort.Split(' ');

                        al.alarr(FTPAddress + "/" + words[words.Length - 1]);

                    }

                }

            }

            catch

            {

                MessageBox.Show("Fehler!");

            }

        }

    }

}

alclass: (diese classe erstellt eine die url-list)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Net;

using System.Collections;


namespace Testftp

{

    class alclass

    {

        ArrayList al_test = new ArrayList();

        public void alarr(string dirpfad)

        {

            al_test.Add(dirpfad);


            StreamWriter Liste_writer = new StreamWriter(@"C:\Users\Swonson\Desktop\Testftp\Testftp\Testftp\download\Liste.txt", true);

            Liste_writer.WriteLine(dirpfad);

            Liste_writer.Close();

        }

    }

}

Ja und das wars. Mehr hat mein programm nicht mehr... und mit diesem code bekomme ich folgende ausgabe:

xx.xx.xxx.xx:xx/_index.php

xx.xx.xxx.xx:xx/Alea

xx.xx.xxx.xx:xx/Alea/test

xx.xx.xxx.xx:xx/Alea/test/Seite1

xx.xx.xxx.xx:xx/Alea/test/Seite1/background.jpg

xx.xx.xxx.xx:xx/Alea/test/Seite1/foto.html

xx.xx.xxx.xx:xx/Alea/test/Seite1/gedichte.html

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik/IMG_1197.jpg

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik/IMG_1217.jpg

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik/janin.jpg

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik/janin1.JPG

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik/janin2.jpg

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik/mama.JPG

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik/papa.jpg

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik/schatz.jpg

xx.xx.xxx.xx:xx/Alea/test/Seite1/grafik/schatz1.jpg

ich lade die datein von meinem rootserver auf dem ein ftp läuft...

Ich schließe den reader, da er sonst wieder neu connectet und und mein user mehrfach auf dem server vorhanden ist und das geht nicht.

Sind alles fragen beantwortet ? wenn nicht bitte fragen...

ich danke dir aber dennoch schonmal für deine geduld, auch wenn sie sicherlich schon sehr strapaziert wird...

gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich schließe den reader, da er sonst wieder neu connectet und und mein user mehrfach auf dem server vorhanden ist und das geht nicht.

Na dann ist ja klar, warum nach dem ersten Verzeichnis Schluss ist. Weitere Verzeichnisse kannst du nicht mehr aus deinem Reader lesen, weil der geschlossen wurde.

Du könntest zuerst alle Unterverzeichnisse in eine Liste stecken, und dann beim Abarbeiten der Liste den rekursiven Aufruf machen, dann kann das nicht mehr passieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen


Function getdir( path )

For each x in readdir( path )

  if x is dir and x != "." and x != ".." then list.add(x)

  if x is file then getfile( path + x)

Next

for each d in list

   getdir( path + d )

next

leider hat dieser Code einen fehler, er sieht gut aus und ich dachte das wäre die lösung, aber problem ist die zweite foreachschleife... beim erstenmal funktioniert es wunderbar problem ist nur, nach dem sie die "getdir( path + d )" aufruft wird die "d in list" zurück auf anfang gesetzt, heißt also, er nimmt dann wieder das erste element und macht demnach das selbe ab dem 2 durchlauf. Hat jemand hier für eine lösung, generell glaube ich das dies wirklich der richtige weg ist, denn rein logisch sieht er gut aus, wenn man der liste jetzt nur noch sagen könnte das bereits eingelesene items nicht mehr gelesen werden soll wäre das wohl die richtige lösung. mal meien umsetzung:

                while (!reader.EndOfStream)

                {

                    sort = reader.ReadLine();


                    if (sort.StartsWith("d"))

                    {

                        words_dir = sort.Split(' ');

                        if (words_dir[words_dir.Length - 1] != "." && words_dir[words_dir.Length - 1] != "..")

                        {

                            listBox1.Items.Add(words_dir[words_dir.Length - 1] + "/");

                        }


                    }

                    else if (sort.StartsWith("-"))

                    {

                        words = sort.Split(' ');

                        listBox1.Items.Add(words[words.Length - 1]);

                    }

                }


                foreach (string Item in listBox1.Items)

                {

                    if (Item.EndsWith("/"))

                    {

                        reader.Close();

                        responseStream.Close();

                        response.Close();


                        getlist(path + Item);

                    }

                }


Link zu diesem Kommentar
Auf anderen Seiten teilen

Keine Listbox. Eine Liste.

ArrayList, oder was man dafür in C# üblicherweise benutzt.

Was noch viel wichtiger ist: Es muss eine lokale Liste sein. Die Listbox würde auch funktionieren, aber die ist doch mit Sicherheit nicht lokal zu dieser Funktion.

Bei Rekursion musst du sehr genau darauf achten, wo deine Variablen deklariert sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier mal mein neuer gesamter code:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net;

using System.IO;

using System.Collections;


namespace WindowsFormsApplication10

{

    public partial class Form1 : Form

    {

        string sort;

        string[] words_dir;

        string[] words;

        string adresse = "****";

        string User = "****";

        string Pw = "****";

        ArrayList al_test = new ArrayList();


        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            getlist(adresse);

        }


        public void getlist(string path)

        {

            FtpWebRequest request = FtpWebRequest.Create(path) as FtpWebRequest;


            request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

            request.Credentials = new NetworkCredential(User, Pw);

            request.UsePassive = true;

            request.UseBinary = true;

            request.KeepAlive = true;


            FtpWebResponse response = request.GetResponse() as FtpWebResponse;

            Stream responseStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(responseStream);



                while (!reader.EndOfStream)

                {

                    sort = reader.ReadLine();


                    if (sort.StartsWith("d"))

                    {

                        words_dir = sort.Split(' ');

                        if (words_dir[words_dir.Length - 1] != "." && words_dir[words_dir.Length - 1] != "..")

                        {

                            al_test.Add(path + words_dir[words_dir.Length - 1] + "/");

                        }


                    }

                    else if (sort.StartsWith("-"))

                    {

                        words = sort.Split(' ');

                        al_test.Add(path + words[words.Length - 1]);

                    }

                }


                foreach (string Item in al_test)

                {

                    if (Item.EndsWith("/"))

                    {

                        reader.Close();

                        responseStream.Close();

                        response.Close();


                        getlist(Item);

                    }

                }


            MessageBox.Show("Liste ist fertig!");

        }

    }

}

So sieht mein Code nur noch aus, ich hab ihn stark reduziert, da ich eingesehen habe, das ich mich mit meinem anderen code nur verrenne... Wie gesagt generell bin ich der meinung, das es so gehen muss und das der richtige weg ist, da jede rekursion die ich im netz zum Thema "VZ durchsuchen" finde so oder sehr ähnlich aufgebaut ist. desweiten nehme ich stark an das Klotzkopp viel ahnung hat daher hab ich mich entschlossen mein code nur noch so aufzubauen. Leider habe ich das gleiche problem wie mit der ListBox. Er geht das erstemal ins erste Item, was ein ordner (Bei mir mit
if (Item.EndsWith("/"))

selektiert)ist und ruft damit die funktion neu auf. Wunderbar! Alles sieht gut aus, ausser das er es immer so macht und nicht das nächste item nimmt.

Hat jemand eine Ahnung wie man dies ändern kann ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du hast das gleiche Problem wie mit der Listbox, weil deine Liste denselben Gültigkeitsbereich wie deine Listbox hat.

Deine Liste muss lokal sein. Du musst sie in der rekursiven Funktion deklarieren, damit jeder rekursive Aufruf seine eigene Liste hat.

Es kann nicht funktionieren, wenn die Liste ein Member deiner Form-Klasse ist.

Das Schließen des Readers kannst du zwischen die Schleifen packen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Verzeiht ich hatte keine Zeit... und dann vergessen :(

So hier wie versprochen der Code. So läuft er bei mir ohne Probleme.

Vielen Dank nochmal an Klotzkopp und die Anderen vielen Dank für eure hilfe ihr seid super!


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net;

using System.IO;

using System.Collections;


namespace WindowsFormsApplication10

{

    public partial class Form1 : Form

    {


        string sort;

        string[] words_dir;

        string[] words;

        string adresse = "ftp://xx.xxx.xx.xx/";

        string User = "****";

        string Pw = "****";

        ArrayList al_test = new ArrayList();


        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            getlist(adresse);

        }


        public void getlist(string path)

        {

            FtpWebRequest request = FtpWebRequest.Create(path) as FtpWebRequest;


            request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

            request.Credentials = new NetworkCredential(User, Pw);

            request.UsePassive = true;

            request.UseBinary = true;

            request.KeepAlive = true;


            FtpWebResponse response = request.GetResponse() as FtpWebResponse;

            Stream responseStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(responseStream);


            //sContent = Liste_reader.ReadToEnd();

            //Liste_reader.Close();

            try

            {

                while (!reader.EndOfStream)

                {

                    sort = reader.ReadLine();


                    if (sort.StartsWith("d"))

                    {

                        words_dir = sort.Split(' ');

                        if (words_dir[words_dir.Length - 1] != "." && words_dir[words_dir.Length - 1] != "..")

                        {

                            //al_test.Add(path + words_dir[words_dir.Length - 1] + "/");

                            vergleich(path + words_dir[words_dir.Length - 1] + "/");

                        }


                    }

                    else if (sort.StartsWith("-"))

                    {

                        words = sort.Split(' ');

                        //al_test.Add(path + words[words.Length - 1]);

                        vergleich(path + words[words.Length - 1]);

                    }

                }


                foreach (string Item in al_test)

                {

                    if (Item.EndsWith("/"))

                    {

                        reader.Close();

                        responseStream.Close();

                        response.Close();

                        al_test.Remove(Item);

                        getlist(Item);

                    }

                }


                StreamWriter Liste_writer = new StreamWriter(@"C:\Pfad zur Textdatei die die Liste beinhalten soll", true);

                foreach (string item2 in al_test)

                {

                    Liste_writer.WriteLine(item2);

                }

                Liste_writer.Close();


            }

            catch (InvalidOperationException)

            {

                MessageBox.Show("Zugriff fehlgeschlagen");

            }


            MessageBox.Show("Liste ist fertig!");

        }


        public void vergleich(string path_save)

        {

            bool ok = true;

            foreach (string Item in al_test)

            {

                if (Item == path_save)

                {

                    ok = false;

                    break;

                }

            }


            if (ok)

            {

                al_test.Add(path_save);

            }

        }

    }


}

Also so wird die Liste korrekt erstellt die man dann in die Download prozedur einbinden kann.

gruß Swonson

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...