lire le fichier dans une applet


1

Bonjour, je veux lire un fichier qui se trouve sur le serveur. je reçois le chemin du fichier par un paramètre

<PARAM name=fileToRead value="http://someserver.de/file.txt"> 

quand je commence maintenant l'applet erreur suivante se produit

Causée par: java.lang.IllegalArgumentException: schéma d'URI n'est pas « fichier »

Quelqu'un peut-il me donner un indice?

BufferedReader file; 
         String strFile = new String(getParameter("fileToRead")); 

         URL url = new URL(strFile); 
         URI uri = url.toURI(); 
         try { 

          File theFile = new File(uri); 
          file = new BufferedReader(new FileReader(new File(uri))); 

         String input = ""; 

          while ((input = file.readLine()) != null) { 
           words.add(input); 
          } 
         } catch (IOException ex) { 
          Logger.getLogger(Hedgeman.class.getName()).log(Level.SEVERE, null, ex); 
         } 
  0

Veuillez montrer du code et l'URL que vous donnez à l'applet. 22 févr.. 092009-02-22 10:00:36

1

Vous essayez ouvert comme un fichier, quelque chose qui ne suit pas le fichier: // uri, comme le suggère l'erreur.

Si vous souhaitez utiliser une URL, je vous suggère d'utiliser simplement url.openStream(), ce qui devrait être plus simple.

  0

ok je l'ai fait en accédant au fichier en tant que ressource, maintenant ça marche :) 22 févr.. 092009-02-22 11:33:55


3
File theFile = new File(uri); 

n'est pas la bonne méthode. Vous accédez à une URL, pas un fichier.

Votre code devrait ressembler à ceci:

try 
{ 
URL url = new URL(strFile); 
InputStream in = url.openStream(); 
(... read file...) 
in.close(); 
} catch(IOException err) 
{ 
(... process error...) 
} 
  0

ok je l'ai fait de cette façon, dans netbeans cela fonctionne mais l'ouverture de l'applet dans le navigateur ne lit pas les données. qu'est-ce qui peut mal se passer ici? 22 févr.. 092009-02-22 10:11:49

  0

java.security.AccessControlException: accès refusé (java.net.SocketPermission root.xelluloid.de:80 connect, resolve) semble être un problème de sécurité? 22 févr.. 092009-02-22 10:16:58

  0

Par défaut, les applets et les applications WebStart peuvent uniquement accéder au serveur à partir duquel ils ont été téléchargés (politique de "même origine"). Si une applet est chargée depuis le système de fichiers, il n'y a pas d'origine réseau. 22 févr.. 092009-02-22 11:18:16

  0

BTW: Cela devrait être InputStream final dans = url.openStream(); essayez {(... lisez le fichier ...)} finally {in.close(); } 22 févr.. 092009-02-22 11:19:46

  0

Vous pouvez contourner cette stratégie en l'empaquetant en tant que fichier JAR, puis en le signant. L'utilisateur recevra une boîte de dialogue de confirmation dans laquelle il doit autoriser l'accès étendu pour votre applet (faites-lui confiance). Vous pouvez accéder à son système de fichiers complet et ouvrir des connexions à n'importe quel serveur par la suite. 22 févr.. 092009-02-22 17:36:59

  0

J'ai fait du fichier une ressource et donc ça a marché finde sans un message de sécurité lors de la signature =) mais merci pour tout 25 févr.. 092009-02-25 08:09:39


1

Vous devrez signer l'applet sauf si le fichier est accessible à partir du même serveur/port que l'applet est venu.