Java Applet - Filåtkomst nekad?

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

Java Applet - Filåtkomst nekad?

Hallå!

Jag håller på med att porta ett c++ spel till java som kan köras på en webbsida, dock fick jag nu felmeddelande om filepermission när jag skulle ladda en textfil till java appleten, bilder går ju utan problem, hur gör jag smidigast för att kunna ladda min textfil (spelbanor)? Andra alternativ?

felmeddelande:
java.security.AccessControlException: access denied (java.io.FilePermission level1.cfg read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.File.exists(Unknown Source)
at HelloWorld.init(HelloWorld.java:375)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Undantag: java.security.AccessControlException: access denied (java.io.FilePermission level1.cfg read)

btw, filen fungerar utmärkt när man kompilerar & kör, men inte genom webbläsare...

MVH
Dalton Sleeper

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Mar 2008

Applets på nätet är sandboxade som standard, så man inte kan hitta på allsköns dumheter med filsystemet via en applet som ligger på en hemsida. Ex. så blir nästan alla operationer genom File-objekt ajabaja.

Dock kan man komma åt resurser som ligger i appletens egen lilla värld genom getClass().getResource och getClass().getResourceAsStream. Så om du vill hämta t.ex. en textfil kan du skriva så här:

BufferedReader r = new BufferedReader(new InputStreamReader( getClass().getResourceAsStream("minfil.txt")));

Det här skapar en BufferedReader som läser ur filen minfil.txt, som då antas ligga i samma paket som klassen du nu befinner dig i. Om filen inte finns så returnerar getResourceAsStream null, vilket kan vara bra att ha koll på.

Vill du komma åt en fil i samma paket som klassen FooBar, kan du skriva FooBar.class.getResourceAsStream.

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

Det fungerade utmärkt, tackar!

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |