[ stalker @ 31.10.2003. 17:15 ] @
Pravim neki mali programcic u Javi (nov sam u Javi, inace).Treba da se napravi programcic koji ce da cita nesto iz fajla i da to prikazuje (uz obradu, naravno).
Evo i deo koda koji ucitava fajl (posle ga ja obradjujem i zatvaram, naravno)
Code:

private FileReader Fajl;
INI(String ImeFajla){
    try {
        Fajl=new FileReader(ImeFajla);
        } catch (IOException d) {
    }
}

ImeFajla je na primer ="Podaci.ini", a od metoda FileReader klase koristim samo jos read(),reset() i close().
Fora je sto sve ovo radi u appletviewer-u, a kad zelim da pokrenem u IE-u prikazuje mi ovu poruku, dole u status bar-u IE-a.
Code:

exception: com.ms.security.SecurityExceptionEx[INI,<init>]: cannot access file Podaci.ini

i ceo aplet nece ni da mrdne (siv je).
Ista stvar vazi kada ovo sve prebacim na moj deo na serveru na dreniku.
Fajl se inace nalazi u istom direktorijumu kao i class fajlovi i html fajl (u svim slucajevima)
Koliko sam ja shvatio, u javi ne mozes da pristupas fajlovima na disku onog ko pokrene applet,ali sto ovo ne moze? Kako da ovo ispravim? Gde gresim? Ode mi celo programce ako ovo ne uspem da odradim...
(Prilicno je hitno!)

P.S.Sad sam jos malo trazio po dokumentaciji, i jedino sto sam nasao je FilePermission klasa za koju pise ovako: Please note: Code can always read a file from the same directory it's in (or a subdirectory of that directory); it does not need explicit permission to do so. (tj. ovo mi uopste ne treba)
[ sspasic @ 01.11.2003. 07:18 ] @
Pogledaj ovaj link:
http://java.sun.com/docs/books/tutorial/security1.2/index.html
Security podesavanja za aplet (dakle kod koji je dosao preko mreze) ti ne dozvoljavaju da pristupis tom fajlu.

Dozvole se postavljaju Policy Tool-om ili editovanjem fajla java.policy.

Ako pokusavas da apletom promenis policy, mehanizam ti nece dozvoliti, posto je default policy i za java.policy da mu se ne moze pristupiti iz koda koji je dosao sa mreze, naravno.

appletviewer je drugo okruzenje, kod koji nije dosao sa mreze vec je lokalan - a za to su default podesavanja drugacija.

E sad, drugo je pitanje kad aplet stavis na drenik. Ako ti je fajl u istom direktorijumu kao i class fajlovi a alet se izvrsava na klijentu da bi mogao da menjas nesto na fajlu potreban ti je i neki kod koji radi na serveru, npr. servlet.
Ako fajl samo citas (a ne menjas), mozes iz apleta sa servera da ga prevuces npr. kroz HTTP.
[ stalker @ 01.11.2003. 12:30 ] @
Nista dok sam ne isceprkas;)
Evo ga kod koji radi:
Code:

private InputStream Fajl=null;
INI(String ImeFajla){
    try {
        Fajl = new URL(getDocumentBase(), Fajl).openStream();
        } catch (Exception d) {
    }
}

openStream() pravi novi InputStream, a pre toga se pravi url za taj fajl pravljenjem novog URL objekta.

P.S.getDocumentBase() radi samo u "glavnom fajlu", izgleda. Posto je ova INI klasa meni u fajlu Ini.java ubacio sam jos jednu stvar u konstruktor, pa mi to izgleda:
INI(URL Baza,String ImeFajla){
try {
Fajl = new URL(Baza, Fajl).openStream();
} catch (Exception d) {
}
}
[/code]
s tim da se poziva sa npr.
Code:

INI(getDocumentBase(),"Podaci.ini")

P.S.S.tnx anyway