Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.04.2013, 18:54

[C#] Get files from Directories (URL)

Hey, ich möchte gerne alle Dateien von einer Website herausbekommen.
Also z.B.
index.html
datei.html
Ordner/anderes.html
etc.

Was ich zur Zeit habe kann man leider nicht auf einer Website anwenden sondern nur Local benutzen.

C#-Quelltext

1
2
3
4
5
6
7
8
public void Main(){            string[] fileNames = getFilesFromBaseDir("C:\\folder");
            foreach (string fileName in fileNames)            {                richTextBox1.Text += fileName + Environment.NewLine;            }}
public static string[] getFilesFromBaseDir(string baseDir)        {            List<string> fileResults = new List<string>();            ArrayList directories = new ArrayList();
            // Add inital Directory to our ArrayList            directories.Add(baseDir);
            // Loop while there is something in our ArrayList            while (directories.Count > 0)            {                // Get directory from ArrayList                string currentDir = directories[0].ToString();
                // Remove element from ArrayList                directories.RemoveAt(0);
                // Add all files in this directory                foreach (string fileName in Directory.GetFiles(currentDir, "*.*"))                {                    fileResults.Add(fileName);                }
                // Add all directories in currentDir                foreach (string dirName in Directory.GetDirectories(currentDir))                {                    directories.Add(dirName);                }            }            return fileResults.ToArray();        }



Wie kann ich das nun auf einer Website anwenden?

edit: Das Format von [cs] funktioniert irgendwie nicht (Der macht keine Umbrüche)


patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

2

22.04.2013, 19:15

Das Problem dabei ist, dass auf den meisten Webservern die Ordnerübersicht abgeschaltet ist. Das heißt, du weist nicht, ob da noch ne Datei mit irgendeinem Namen ist, wenn du keine Übersicht hast. Ein Ansatz wäre es, die index.php/html abzurufen, zu parsen und allen Links/img-Tags innerhalb zu folgen. Dabei aber merken, welche Links schon besucht wurden, sonst landest du in einer Endlosschleife.

3

22.04.2013, 19:23

Es sieht so aus http://www.ibiblio.org/pub/
Also ich habe die Ordnerstruktur
Und ich möchte dann alle Dateien durchgehen und dann soll das Datum gespeichert werden, wann es zuletzt bearbeitet wurde


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

22.04.2013, 20:11

Der Link ist nichts weiter als eine normale HTML-Datei. Die musst Du dann entsprechend parsen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    <tbody>
        <tr><td class="n"><a href='../'>Parent Directory</a></td><td class="m">&nbsp;</td><td class="s">&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="Linux/">Linux/</a></td><td class="m">2013-Jan-17 06:05:21</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="X11/">X11/</a></td><td class="m">2005-Jan-26 11:41:28</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="academic/">academic/</a></td><td class="m">2004-Feb-06 18:00:48</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="archives/">archives/</a></td><td class="m">2012-Feb-23 11:22:34</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="docs/">docs/</a></td><td class="m">2011-May-24 09:56:58</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="electronic-publications/">electronic-publications/</a></td><td class="m">2011-Mar-23 17:27:33</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="historic-linux/">historic-linux/</a></td><td class="m">2012-Apr-30 16:37:52</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="languages/">languages/</a></td><td class="m">2006-Feb-12 21:20:46</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="linux/">linux/</a></td><td class="m">2013-Jan-17 06:05:21</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="micro/">micro/</a></td><td class="m">2011-Jan-11 17:36:51</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="multimedia/">multimedia/</a></td><td class="m">2013-Jan-17 23:05:00</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="packages/">packages/</a></td><td class="m">2011-Mar-23 17:24:19</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    <tr><td class="n"><a href="sun-info/">sun-info/</a></td><td class="m">2001-Jun-07 12:31:42</td><td class="s">-&nbsp;</td><td class="t">Directory</td></tr>
    </tbody>
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

22.04.2013, 20:17

Das habe ich auch schon gemacht nur bekomme ich dann nicht die Dateien in den Ordnern.


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

22.04.2013, 20:27

Willkommen beim Hypertext Transfer Protokoll.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

23.04.2013, 11:42

Was möchtest du von uns jetzt wissen? Ach warte da gab es mal einen Befehl:

C#-Quelltext

1
Magic.Voodo.DoAwesomeStuff.LoadWebsiteWithUnknownSubsitesFromServer();

Das gute ist die Funktion benötigt nicht mal irgendwelche Parameter. Die weiß direkt was der Benutzer möchte.
Du musst dir mal überlegen was da vor liegt und was du genau möchtest. Du sagst du kennst die Ordnerstruktur. Kennst du auch die Dateien in den Ordnern? Wenn ja, dann hol dir doch direkt die Ordner. Wenn du dann so eine HTML Seite parst, dann ist das natürlich nur eine einzelne Seite. In dieser Seite stecken aber eine Menge Informationen. Patrick246 hat ja schon geschrieben was getan werden muss um von einer Seite auf verlinkte Seiten etc zu schließen. Dabei musst du dann noch aufpassen nicht auf externe Seiten verlinkt zu werden, weil das ganze dann unglaublich lange und unglaublich viel laden könnte. Durch diese Informationen musst du dann schon keine Ahnung mehr haben, welche Unterseiten es gibt. Wie gesagt, weißt du welche Dateien es alles gibt hol sie dir direkt, ansonsten hol sie dir durch parsen der Index-Seite und folgender.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige