Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Applet e file di testo

    Salve,
    ho creato un applet che deve leggere delle informazioni da un file di testo (creato con blocco note), ma quando la vado a provare mi dà errore lanciandomi una java.security.AccessConrolException: accesso negato al file.
    Come posso fare?
    Preciso che ho uno spazio su internet su cui devo far funzionare questo applet e che sia l'applet che il file di testo sono su questo spazio (nella stessa cartella).
    Mi rendo conto che è un problema di sicurezza, ma il file è memorizzato assieme all'applet ed alla pagina html che li utilizza, quindi non si deve fare alcun accesso al file system locale di chi visita la pagina!
    Per favore, aiutatemi!!!!
    Grazie, ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    come stai provando ad accedere al testo!? posta il codice.

    Per esempio, questo è un sistema che funziona:

    codice:
    import java.net.*;
    import java.io.*;
    import java.awt.*;
    import java.applet.*;
    
    public class readFileApplet extends Applet {
    
      public TextArea showFile;
    
      public void init() {
        try {
          InputStream in = (new URL(this.getCodeBase().toString() +
                                    "/commands.txt")).openStream();
          int c;
          //String name ="";
          byte[] b= new byte[in.available()];
          in.read(b);
          String name = new String(b);
          showFile = new TextArea(name, 40, 40);
          this.add(showFile);
          showFile.setVisible(true);
        }
        catch (Exception e) {System.out.println(e.toString());
        }
      }
    }
    può non essere il massimo in quanto a prestazioni, però svolge il suo lavoro.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Ho modificato il titolo della discussione aggiungendo il linguaggio di programmazione, che va sempre specificato come da Regolamento.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Originariamente inviato da Andrea1979
    come stai provando ad accedere al testo!? posta il codice.

    Per esempio, questo è un sistema che funziona:

    codice:
    import java.net.*;
    import java.io.*;
    import java.awt.*;
    import java.applet.*;
    
    public class readFileApplet extends Applet {
    
      public TextArea showFile;
    
      public void init() {
        try {
          InputStream in = (new URL(this.getCodeBase().toString() +
                                    "/commands.txt")).openStream();
          int c;
          //String name ="";
          byte[] b= new byte[in.available()];
          in.read(b);
          String name = new String(b);
          showFile = new TextArea(name, 40, 40);
          this.add(showFile);
          showFile.setVisible(true);
        }
        catch (Exception e) {System.out.println(e.toString());
        }
      }
    }
    può non essere il massimo in quanto a prestazioni, però svolge il suo lavoro.
    Grazie 1000, il tuo codice va più che bene! Già che ci sono, mica è possibile anche creare e aprire un file in scrittura? Mi andrebbe bene anche solo per uso locale (senza connessione a internet, ma sempre mediante applet). Ho provato con un FileOutputStream, ma anche così mi dà errore di accesso negato.
    Ciao e grazie ancora!


    P.S. Per Alka
    Grazie per la segnalazione, d'ora in poi preciserò sempre il linguaggio di programmazione.
    Ciao

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Attenzione: il codice postato da Andrea funziona, ma se l'applet deve essere messa on-line ed eseguita da un client remoto (praticamente, se l'applet è su internet) il file deve trovarsi nella stessa cartella dell'applet sul server da cui viene scaricata.

    Non è possibile in ogni caso accedere al FileSystem del client che esegue l'applet a meno che l'applet stessa non sia certificata.

    Per la scrittura è ancora più complesso: finchè si tratta di eseguire l'applet in locale non ci sono grossi problemi, ma se devi metterla su internet è diverso. Devi assicurarti di avere i permessi di scrittura sul server da cui viene scaricata l'applet (ed in genere i programmi non hanno tale proprietà).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Esatto. Grazie Lele per le precisiazioni: Il/I file che un applet può leggere deve/ono risiedere nella stessa cartella ( e nelle eventuali sottocartelle :master: ) in cui risiede l'applet stessa.

    Se il server non è tuo o non ci puoi mettere mano, scordati di scriverci niente via applet. Per altri problemi di lettura/scrittura sul client fa riferimento alle signed applet, a proposito delle quali puoi leggere sul sito della sun *e cercare su questo forum*
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Ancora grazie a tutti.
    In effetti, col codice postato ho risolto (il file di testo risiede nella stessa cartella dell'applet), ma se voglio creare un applet che scrive in un file di testo, come posso fare?
    Mi serve per un utilizzo in locale: sia l'applet che il file devono risiedere nella stessa cartella di un computer non connesso a internet.
    Ciao

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    In questo caso non ci sono problemi:
    codice:
    import java.net.*;
    import java.io.*;
    import java.awt.*;
    import java.applet.*;
    
    public class readFileApplet extends Applet {
    
      public TextArea showFile;
    
      public void init() {
        try {
          FileOnputStream out = (new URL(this.getCodeBase().toString() +
                                    "/fileOut.txt")).openStream();
          PrintStream ps = new PrintStream( out );
          ps.println("Questo testo sarà scritto nel file");
          ps.close();
        }
        catch (Exception e) {System.out.println(e.toString());
        }
      }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9

    Grazie

    Grazie mille.
    Ancora una volta mi avete aiutato!
    Questo forum è grandioso!!!!
    Ciao

  10. #10
    Originariamente inviato da LeleFT
    In questo caso non ci sono problemi:
    codice:
    import java.net.*;
    import java.io.*;
    import java.awt.*;
    import java.applet.*;
    
    public class readFileApplet extends Applet {
    
      public TextArea showFile;
    
      public void init() {
        try {
          FileOnputStream out = (new URL(this.getCodeBase().toString() +
                                    "/fileOut.txt")).openStream();
          PrintStream ps = new PrintStream( out );
          ps.println("Questo testo sarà scritto nel file");
          ps.close();
        }
        catch (Exception e) {System.out.println(e.toString());
        }
      }
    }
    Ho provato il tuo codice ma mi dà errore: la classe FileOnput non la riconosce! Ho provato con la classe FileOutput, ma è incompatibile col tipo restituito dal metodo openStream().
    Come posso fare?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.