Java Applet mit Dateizugriff

Hallo,
ich habe ein Java Applet geschrieben(Meine Java kenntnisse sind aber nicht so berauschend) das auf dem lokalen Rechner Dateien lesen und schreiben soll und dafür 2 Funktionen gemacht. Diese sollen später über Javascript aufgerufen werden können. Vorweg ich habe das Applet bereits signiert! Aber ich bekomme beim schreiben(Nicht beim lesen) immer so einen dämlichen Fehler und zwar: writeFile: caught security exception: java.security.AccessControlException: access denied (java.io.FilePermission Hallo.txt write)

Und den bekomme ich nur, wenn ich versuche über Javascript das zu machen also so:
Applet:
Code:
import java.applet.Applet;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test extends Applet {
        
        public void init() {

                String osname = System.getProperty("os.name");
        }
        
        public boolean writeFile(String FileN,String WriteData)
        {
            
            DataOutputStream dos;
            File f = new File(FileN);
            try {
                dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(FileN), 512));
                dos.writeBytes(WriteData);
                dos.flush();
                dos.close();
                System.out.println("Successfully wrote to the file named " + FileN+ " -- go take a look at it!");
                return true;
             } catch (SecurityException e) {
                System.out.println("writeFile: caught security exception: " + e);
                return false;
             } catch (IOException ioe) {
                System.out.println("writeFile: caught i/o exception");
                return false;
             }
            
        }

}

HTML datei:
Code:
<html>
<head><title>Test</title>
</head>
<body>
<applet archive="Include.jar" code="Test.class" name="JInclude" width="500" height="500">
</applet>
<script LANGUAGE="JavaScript">

var Output = document.applets.JInclude.writeFile("Hallo.txt","Wie gehts so?\n");
return Output;

</script>
</body>
</html>

So geht es nicht! Das komische so geht es:
Applet:
Code:
import java.applet.Applet;
import java.awt.Graphics;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test extends Applet {
  String myFile = "Hallo.txt";

  File f = new File(myFile);

  DataOutputStream dos;

  public void init() {

    String osname = System.getProperty("os.name");
  }

  public void paint(Graphics g) {
    try {
      dos = new DataOutputStream(new BufferedOutputStream(
        new FileOutputStream(myFile), 128));
      dos.writeBytes("Was geht?");
      dos.flush();
      dos.close();
      g.drawString("Successfully wrote to the file named " + myFile
          + " -- go take a look at it!", 10, 10);
    } catch (SecurityException e) {
      g.drawString("writeFile: caught security exception: " + e, 10, 10);
    } catch (IOException ioe) {
      g.drawString("writeFile: caught i/o exception", 10, 10);
    }
  }
}

HTML Datei:
Code:
<html>
<head><title>Test</title>
</head>
<body
<applet archive="Include.jar" code="Test.class" name="JInclude" width="500" height="500">
</applet>
</body>
</html>

So geht das, aber warum nur? Ich bin echt am verzweifeln bitte helft mir. Vielen dank im voraus!
 
ganz banal: Hast du die Schreibrechte für die Datei ?
 
bin ich jetzt ganz blöd?

ist nicht gerade die Idee der java Applets das sie aus Sicherheitsgründen eben kein Zugriff auf lokale Dateien erlauben?
 
@ OwnZ mhhh ich verstehe nicht ganz wie du das meinst.

@ben naja es geht schon auch wenn man überleichte umwege( signieren) gehen muss aber das finde ich persönlich nichso schlimm
 
Die Datei, die du beschreiben willst. Darfst du die beschreiben ? Es gibt ja Lese und Schreiberecht ( und noch mehr, ist aber im Moment unwichtig ). Leserecht ist grundsätzlich immer gegeben, deswegen geht das Programm auch wenn du nur die Datei liest. Wenn du jetzt die Datei bearbeiten, also beschreiben willst, kann es sein, dass dann das System sagt, dass du das nicht darfst und deswegen der Fehler ausgeschmissen wird.
Da du als Betriebssystem Win XP angegeben hast, gehe ich davon aus, dass du dieses benutzt. Du kannst das nachgucken indem du rechts klickst, auf "Eigenschaften" gehst und dann guckst, ob ein Häckchen bei "Schreibgeschützt" ist, um dieses dann eventuell zu entfernen(, wenn du entsprechende Rechte besitzt :D).
 
Können aber mit Sicherheit neue Dateien anlegen und in diese schreiben ;)
 
SUN Applet FAQ

How do I let an applet write a file?

Applets loaded into a Java-enabled browser can't write files.

Sun's appletviewer allows applets to write files that are named on the access control list for writing. The access control list for writing is empty by default.

You can allow applets to write to your /tmp directory by setting the acl.write property in your ~/.hotjava/properties file:

acl.write=/tmp
 
Zurück
Oben