Ralf Konstanz: Datei zeilenweise in Array lesen - wie?

Hi!

wie lese ich eine Datei (Text) zeilenweise in einen Array ein?
Und machen die verschiedenen Zeilenenden (PC, Unix, Mac) Probleme?

DANKE!!!

Gruss,

Ralf

  1. Hi Ralf!

    wie lese ich eine Datei (Text) zeilenweise in einen Array ein?

    Gar nicht. JavaScript kann keine Dateien lesen (es sei denn, Du verwendest Signed Scripts (Netscape)
    oder HTA-Applikationen (IE 5+)).

    Du kannst lediglich aus der Textdatei z.B. mit Perl eine JS-Datei generieren, in der ungefaehr sowas steht:
      textdatei = new Array(
        "erste Zeile der Datei",
        "zweite Zeile",
        ...
      );
    und diese generierte Datei dann einbinden.

    Calocybe

  2. Hi Ralf,

    das geht mit Hilfe von Java. Auf dem MSIE hab ich das zwar noch nicht zum Laufen gebracht,
    aber es muß auch irgendwie gehen.

    function read(file)
    {
    var source = new Array();
    var url = new java.net.URL(file);
    var stream = new java.io.DataInputStream(url.openStream());
    var line    = "";
    var nr = 0;
    while ((line = stream.readLine()) != null)
    {
      source[nr] = line;
    }
    stream.close();
    return source;
    }

    Daniel

    1. Hallo Daniel!

      das geht mit Hilfe von Java. Auf dem MSIE hab ich das zwar noch nicht zum Laufen gebracht,
      aber es muß auch irgendwie gehen.

      Wenn das gehen wuerde, waere es ein riesiges Sicherheitsloch. Java und JavaScript unterliegen nicht ohne
      Grund sehr engen Restriktionen bei dem was sie duerfen und was nicht. Ein unsigniertes JavaScript oder
      Java Applet lebt in der sogenannten Sandbox, seinem kleinen Universum. Aus dem darf es nicht heraus.
      Manchmal gelingt es doch einem, dann geht fuer gewoehnlich ueberall die Schlagzeile "Neues Sicherheits-
      loch in IE entdeckt" um.

      Dein Code mag bei einer Java Application gut funktionieren, fuer ein unsigniertes Applet oder JS nuetzt er
      jedoch nichts, denn die Festplatte des Besuchers liegt ausserhalb der erwaehnten Sandbox.

      Calocybe

      1. Hallo Calocybe

        Danke für den Hinweis, aber das habe ich auch gewußt.
        In wirklichkeit ist es ein bischen anders als es du beschreibst.
        Man kann auf diese Weise natürlich nicht auf alle Dateien zugreifen
        (mit signedobjects oder wie das heißt gehts, aber nur mit benuzereraubnis)
        aber auf die die auf dem selben Server im selben Verzeichnis wie die entsprechende HTML, JS, oder
        CLASS Datei.

        Wenn ich sage das es geht, dann hab ich, in 99% der Fälle, wenn es nicht gerade trivial ist,
        es auch ausprobiert und weiß warum es geht.

        Tschüs

        Daniel

        1. N'Abend Daniel

          Man kann auf diese Weise natürlich nicht auf alle Dateien zugreifen
          (mit signedobjects oder wie das heißt gehts, aber nur mit benuzereraubnis)
          aber auf die die auf dem selben Server im selben Verzeichnis wie die entsprechende HTML, JS, oder
          CLASS Datei.

          Mmh sorry, da lag wohl ein Missverstaendnis vor. Ich war davon ausgegangen, dass Ralf's Seite auf einem
          Webserver liegt, die zu oeffnende Datei jedoch auf dem Clientrechner. Wenn man's recht bedenkt, ist das
          aber ziemlich sinnlos, es sei denn, man will wirklich den User ausspionieren. Und das wollen wir doch
          nicht, oder? ;-) Ralf hat leider nicht so genau gesagt, was er eigentlich will. Da er sich bis jetzt nicht mehr
          gemeldet hat, gehe ich mal davon aus, dass ihm genug geholfen wurde.

          Ach ja, eines noch: Bei Deiner Methode muss natuerlich auch Java angeschaltet sein (was bei mir z.B. nie
          der Fall ist). Man sollte also erst mal noch mit navigator.javaEnabled() pruefen, ob man das ueberhaupt
          benutzen kann. Und wenn nicht, naja, dann hat man wohl ein Problem...

          Calocybe

          1. Hallo Calocybe
            »»Wenn man's recht bedenkt, ist das

            aber ziemlich sinnlos, es sei denn, man will wirklich den User ausspionieren. Und das wollen wir doch
            nicht, oder? ;-)

            Naja, so sicher bin ich da nicht...

            Ach ja, eines noch: Bei Deiner Methode muss natuerlich auch Java angeschaltet sein (was bei mir z.B. nie
            der Fall ist).

            Was haßt du gegen Java?
            Zugegeben, es gibt ne Menge dummer Applets, aber Java ist halt doch du coolste Sprache aller Zeiten.
            (Perl ist, genauso cool zugegeben)

            Daniel

            PS: Klarer fall für NI

            1. Moin!

              Was haßt du gegen Java?

              Was ich gegen Java hasse? ;-) Naja, dauert halt immer, bis der Netscape die Engine hochgefahren hat,
              und danach ist er meist recht unstabil. Und ja, meistens wird es fuer irgendeinen Schnickschnack
              missbraucht, manchmal sogar fuer Menues mit Mouse-Over-Effekt. :-( Ansonsten waer's schon ok.

              Zugegeben, es gibt ne Menge dummer Applets, aber Java ist halt doch du coolste Sprache aller Zeiten.
              (Perl ist, genauso cool zugegeben)

              Ich weiss nicht, mit Java konnte ich mich nicht so recht anfreunden. Vom Feeling her gefaellt mir C++
              einfach besser. Will Java aber trotzdem mal noch richtig lernen, wenn... ja wenn ich mal dazu komme. *g*

              So long

              PS: Klarer fall für NI

              Yepp. :-)