lina: mit Applet Verzeichnisse einlesen

moin :)\n

Ich versuche mit einem Applet Verzeichnisse einzulesen, die auf dem selben Server liegen wie das Applet. Dazu habe ich die Klasse URL herangezogen, und ein BufferedReader liest zeilenweise den Inhalt der als URL übergebenen Datei aus. Dies funktioniert auch tadellos, solang es sich bei der URL tatsaechlich um einen Datei handelt (also zb. file://C:/Daten/test.txt)
Leider scheitert diese Methode sobald ein Verzeichnis uebergeben wird (file://C:/Daten). Nun ist es fuer mich aber gerade interessant, welche Unterverzeichnisse sich darin befinden :(
Kann mir da vielleicht jemand einen heissen Tipp geben, wie ich dennoch die Unterverzeichnisse auslesen kann? Vielen Dank!

liebe Gruesse lina

--
\nss:| ls:] fo:| de:] ch:? rl:? br:> js:( ie:% fl:| mo:) \nWer nicht versucht hat schon verloren.
  1. Hallo,

    Ich versuche mit einem Applet Verzeichnisse einzulesen, die auf dem selben Server liegen wie das Applet. Dazu habe ich die Klasse URL herangezogen, und ein BufferedReader liest zeilenweise den Inhalt der als URL übergebenen Datei aus. Dies funktioniert auch tadellos, solang es sich bei der URL tatsaechlich um einen Datei handelt (also zb. file://C:/Daten/test.txt)
    Leider scheitert diese Methode sobald ein Verzeichnis uebergeben wird (file://C:/Daten). Nun ist es fuer mich aber gerade interessant, welche Unterverzeichnisse sich darin befinden :(
    Kann mir da vielleicht jemand einen heissen Tipp geben, wie ich dennoch die Unterverzeichnisse auslesen kann? Vielen Dank!

    Wegen der Einschränkungen eines Applets bezüglich des Dateizugriffs darf ein Applet nur eine URL-connection zu dem Host herstellen, auf dem es selbst gespeichert ist. Per URL können auch nur Ressorcen, keine Dateien oder Verzeichnisse, angefordert werden. Liegt die Class-Datei des Applets auf www.meinedomain.tld, kann ein Applet also Ressourcen von www.meinedomain.tld anfordern. Der http-Zugriff auf www.meinedomain.tld/index.html wäre also möglich, ebenso der http-Zugriff auf www.meinedomain.tld/bilder (bilder ist ein Verzeichnis). Der http-Zugriff auf www.meinedomain.tld ergibt www.meinedomain.tld/index.html oder www.meinedomain.tld/default.html, je nach Einstellung des Servers.

    Im File-Protokoll heißt das:
    Applet-codeBase = file://C:\Daten

    URL url = new URL(getCodeBase(), "test.txt");
       d = new BufferedReader(new InputStreamReader(url.openStream()));
    ist möglich.

    URL url = new URL(getCodeBase(), "bilder");
       d = new BufferedReader(new InputStreamReader(url.openStream()));
    (bilder ist ein Verzeichnis) ist möglich. Ergibt, abhängig vom Betriebssystem, den Verzeichnisinhalt von C:\Daten\bilder.

    //URL url = new URL(getCodeBase(), "");
       //URL url = new URL(getCodeBase(), "./");
       URL url = getCodeBase();
       d = new BufferedReader(new InputStreamReader(url.openStream()));
    wird aus Sicherheitsgründen verhindert, weil der Verzeichnisinhalt von C:\Daten eine Ressource von C:\ ist.

    Was _genau_ willst Du erreichen? Für das Auslesen von Verzeichnisinhalten des http-Servers wirst Du etwas Serverseitiges (JSP, CGI...) brauchen. Zum Auslesen lokaler Verzeichnisse wirst Du signierte Applets benötigen, die einen direkten Zugriff auf lokale File-Objekte haben.

    viele Grüße

    Axel

    1. moin :)

      Was _genau_ willst Du erreichen? Für das Auslesen von Verzeichnisinhalten des http-Servers wirst Du etwas Serverseitiges (JSP, CGI...) brauchen. Zum Auslesen lokaler Verzeichnisse wirst Du signierte Applets benötigen, die einen direkten Zugriff auf lokale File-Objekte haben.

      Vielen Vielen DAnk fuer die ausführliche Antwort. Da ich im Intranet einer Firma arbeite darf ich weder was Serverseitiges nutzen noch signierte Applets verwenden :( Auf diese Idee bin ich ja auch schon gekommen ;)
      Aber deine Antwort bringt mich auf eine Idee.
      Mal ein Beispiel zum besseren Verständnis:
      Wir haben den Ordner: C:\Handbuch - das ist der Ordner wo index.html und andere Seiten liegen. Dann gibt es noch: C:\Handbuch\Bilder, C:\Handbuch\Daten, und C:\Handbuch\Doku. Unter diesen dreien verzweigt es sich dann noch weiter. Wenn der Ordner Bilder gelesen wird - sollte es doch auch möglich sein, Daten und Doku einzulesen oder hab ich das jetzt falsch verstanden?

      liebe Gruesse lina

      --
      ss:| ls:] fo:| de:] ch:? rl:? br:> js:( ie:% fl:| mo:)
      Wer nicht versucht hat schon verloren.
      1. Hallo,

        Vielen Vielen DAnk fuer die ausführliche Antwort. Da ich im Intranet einer Firma arbeite darf ich weder was Serverseitiges nutzen noch signierte Applets verwenden :( Auf diese Idee bin ich ja auch schon gekommen ;)
        Aber deine Antwort bringt mich auf eine Idee.
        Mal ein Beispiel zum besseren Verständnis:
        Wir haben den Ordner: C:\Handbuch - das ist der Ordner wo index.html und andere Seiten liegen. Dann gibt es noch: C:\Handbuch\Bilder, C:\Handbuch\Daten, und C:\Handbuch\Doku. Unter diesen dreien verzweigt es sich dann noch weiter. Wenn der Ordner Bilder gelesen wird - sollte es doch auch möglich sein, Daten und Doku einzulesen oder hab ich das jetzt falsch verstanden?

        Ja, das ist möglich.
        Allerdings ist das, was da zurückkommt nicht eindeutig definiert. Je nach System und Java-Plugin kann das HTML:

        <title>Directory Listing</title>
        <base href="file://localhost/C:\Handbuch\bilder/"><h1>C:\Handbuch\bilder</h1>
        <hr>
        <img align=middle src="doc:/lib/images/ftp/file.gif" width=32 height=32>
        <a href="backgrnd.gif">backgrnd.gif</a><br><img align=middle src="doc:/lib/images/ftp/file.gif" width=32 height=32>
        <a href="client.gif">client.gif</a><br><img align=middle src="doc:/lib/images/ftp/file.gif" width=32 height=32>
        <a href="Currency.gif">Currency.gif</a><br><img align=middle src="doc:/lib/images/ftp/file.gif" width=32 height=32>
        <a href="Dad's Shirt.gif">Dad's Shirt.gif</a><br><img align=middle src="doc:/lib/images/ftp/file.gif" width=32 height=32>
        <a href="space.gif">space.gif</a><br><img align=middle src="doc:/lib/images/ftp/file.gif" width=32 height=32>
        <a href="tech.gif">tech.gif</a><br>

        oder Pain-Text sein:

        backgrnd.gif
        client.gif
        Currency.gif
        Dad's Shirt.gif
        space.gif
        tech.gif

        Probiers aus!

        viele Grüße

        Axel

        1. moin :)

          Probiers aus!

          mach ich doch glatt ;) und da mich wirklich nur die Unterverzeichnisse interessieren isses mir egal in welcher Form die Ausgabe kommt :) *freu*
          Die Lösung war im Endeffekt sehr einfach: ich habe nur das Startverzeichnis eine Ebene nach unten geschoben und jetzt funktioniert alles wie es soll. Auf diese Idee waer ich nie gekommen *g*
          Hab vielen vielen Dank! Ich wünsche dir noch einen schoenen Tag :)

          liebe Gruesse lina

          --
          ss:| ls:] fo:| de:] ch:? rl:? br:> js:( ie:% fl:| mo:)
          Wer nicht versucht hat schon verloren.