alter einer Datei die im Applet geladen wird?

Von: , Frage gestellt am Fr, 30. Apr 2004

Ich lade ein meinem Applet eine Datei auf folgende weise:
Zuerst in der HTML-Datei den Filenamen übergeben:
<applet code="Karte.class" width="1300" height="1100">
<param name="filename" value="output.txt">
</applet>
dann lade ich diesen Parameter in meiner Klasse und lade die URL mit der Datei:
try
{
url = new URL(getDocumentBase(), getParameter("filename"));
file = new DataInputStream(url.openStream());
}catch (Exception e)
{
Fehler = true;
}

naja und anschliessend lese ich mit readByte() den Stream.

Ziemlich umständlich aber irgendwie die einzige möglichkeit mit der ich mein Applet dazu gekriegt habe die Datei zu laden.
Gibt es eine Möglichkeit das Alter (lastModified) herauszufinden?

Ach und 2. hab ich irgendwie den Verdacht, daß die Datei nicht allzugroß sein darf, meine Textdatei ist 1.4MB groß und da läd er die auf dem Server einfach nicht.
Deshalb hab ich jetzt einfach mal 2 Dateien mit je 700KB benutzt. Geht das auch anders? Auf meinem Rechner zu Hause funzt das Applet ja, nur auf dem Server irgendwie nicht :-(

Gruß Wizard of War

14 Antworten zu dieser Frage

  1. Antwort von nach 2 Stunden 0 hilfreich
    Re: alter einer Datei die im Applet geladen wird?

    Moin Ach und 2. hab ich irgendwie den Verdacht, daß die Datei nicht
    allzugroß sein darf, meine Textdatei ist 1.4MB groß und da läd
    er die auf dem Server einfach nicht.
    Da gibts eigentlich keinerlei Beschränkungen, kannst du mal den auslese-code posten ?

    cu

    • Antwort von nach 2 Stunden 0 hilfreich
      Re^2: alter einer Datei die im Applet geladen wird

      Meinst du das hier?
      char c = ' ';
      while(c != '\n')
      {
      byte b = file.readByte();
      c = (char)b;
      hold += Character.toString(c);
      }
      danach wird der String "hold" verarbeitet.
      Dies wird so lange durchgeführt bis eine Exception kommt.

      • Antwort von nach 5 Stunden 0 hilfreich
        Re^3: alter einer Datei die im Applet geladen wird

        Moin Meinst du das hier?
        JA.

        Eigentlich müssten damit auch 1.4 MB möglich sein. (Obwohl das:

        BufferedReader BUF = new BufferedReader (new InputStreamReader (file)));


        StringBuffer SB = new StringBuffer ();
        String st = BUF.readLine();
        while (st!=null){
        SB.append (st);
        st = BUF.readLine();
        }

        String ende = SB.toString();

        wesentlich schneller sein sollte. (Exception muss man abfangen, aber das while() beendet wenn die Datei alle ist.)

        Wieso genau kanns du nur 700KB laden ? Welche Exception kommt da ?

        cu

        • Antwort von nach 5 Stunden 0 hilfreich
          Re^4: alter einer Datei die im Applet geladen wird

          Moin

          BufferedReader BUF = new BufferedReader (new InputStreamReader
          (file)));


          StringBuffer SB = new StringBuffer ();
          String st = BUF.readLine();
          while (st!=null){
          SB.append (st);
          st = BUF.readLine();
          }

          String ende = SB.toString();
          Das Werde ich gleich mal einbauen, welche Exception kommt muss ich erstmal ausgeben und die 1.4MB Datei hochladen.
          werde also erst etwas später heute die Exception sagen können.

          Kann man das lastModified irgendwie herausbekommen?
          Und gibt es noch eine bessere Möglichkeit ne Datei in nem Applet zu laden?

          • Antwort von nach 8 Stunden 0 hilfreich
            Re^5: alter einer Datei die im Applet geladen wird

            Moin Kann man das lastModified irgendwie herausbekommen?
            über Netz per URL: nein. Und gibt es noch eine bessere Möglichkeit ne Datei in nem
            Applet zu laden?
            Was ist in der Datei drin ?

            cu

            • Antwort von nach 9 Stunden 0 hilfreich
              Re^6: alter einer Datei die im Applet geladen wird

              Also die Datei besteht aus Ansi-Text.
              Also nur Buchstaben, zahlen, sonderzeichen, Tabstopps, und NewLines.

              Nun zu der Exception, kurioserweise kommt da eine EOFException.
              Und wenn ich mir die gelesenen Zeilen ausgeben lassen will kommt gar nix.
              Geöffnet wird die Datei ganz normal, da kommt also keine Exception, aber angeblich ist die Datei halt leer. Aber das stimmt net es sind
              1.494.954 Bytes, insgesamt 150 x 200 Zeilen Text.

              Wie gesagt mit einer 700KB datei mit 150 x 100 Zeilen funzt es.

            • Antwort von nach einem Tag 1 hilfreich
              Re^7: alter einer Datei die im Applet geladen wird

              Moin Also die Datei besteht aus Ansi-Text.
              Dann solltest du das dem InputStream - Reader Umwandler sagen, sonst werden die Sonderzeichen ein bisschen leiden... Der ensprechende Konstruktor ist:

              InputStreamReader(InputStream in, String charsetName) throws UnsupportedEncodingException

              Die Klasse verwendet sonst die Standartencoding, was bei windows ISO-8XYZ ist und bei Linux durchaus mal in UTF-8 oder Unicode umschlagen kann. Tab's bleiben erhalten, aber schon bei den newlines gibts Ärger. Nun zu der Exception, kurioserweise kommt da eine EOFException.
              Test mal das:
              URL U = new URL ("http://was-auch-immer.com/DateiName.XYZ");
              URLConnection uc = U.openConnection();
              System.out.println (uc.getLastModified());    //<= Das ist nicht zuverlässig und kann durchaus auch 0 (+-1970) zurückgeben.

              System.out.println (uc.getContentLength());

              Wenn da -1 kommt weiss der Server nicht wie gross die Datei ist (oder wills nicht verraten). Wenn da 0 kommt ist die Datei auf dem Server nicht richtig gespeichert. Wenn's 1.4MB sind und die Datei trotzdem nicht ganz ankommt hast du ein EOF-Zeichen in der Datei stehen und der Server ist saublöd.


              Btw: Wenn man ANSI-Text gzipped schrupfen 1.4 MB locker auf unter 500KB. Zum lesen kann man dann java.util.GZIPInputStream benutzen. Liest aber nur gzip Daten, keine zip. Im Internet sollte man immer alle Daten so klein wie möglich halten, es könnte ja jemand mit 56K-Modem die Seite finden.

              cu

            • Antwort von nach 2 Tagen 0 hilfreich
              Super!!! Voll ins Schwarze getroffen!

              *Knuddel*
              Diese Tips sind ja Gold wert!

              Es sind nämlich zum einen Sonderzeichen wie ö als &uoml codiert und ich wandle die immer von Hand um.
              Ausserdem liegt die ursprüngliche Datei als GZip Datei vor, ich hab die bisher immer zu Hause entpackt und dann als TXT auf den Server hochgelade.
              Ich werde gleich mal versuchen das alles umzusetzten.

              Vielen Dank für die super Hilfe!!!!!!

              Wizard of War

            • Antwort von nach 2 Tagen 0 hilfreich
              uc.getContentLength() = 0

              Also es kommt eine 0, d.h. die Datei ist nicht richtig gespeichert. Ich werde jetzt mal die GZip-dekompression benutzen denn GZipDatei ist nur 700kb groß, damit umgehe ich dieses Problem.



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!