читать файл в апплете


1

Привет, я хочу прочитать файл, который лежит на сервере. я получить путь к файлу с помощью параметра

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

, когда я теперь запустить апплет следующее сообщение об ошибке

Вызванный: java.lang.IllegalArgumentException: схема URI не «файл»

Может кто-нибудь дать мне подсказку?

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

Пожалуйста, покажите код и URL-адрес, который вы передаете апплету. 22 фев. 092009-02-22 10:00:36

1

Вы пытаетесь открыть как файл, что не следует за файлом: // uri, как показывает ошибка.

Если вы хотите использовать URL-адрес, я предлагаю вам использовать url.openStream(), который должен быть проще.

  0

ok я сделал это, обратившись к файлу как к ressource, теперь он работает :) 22 фев. 092009-02-22 11:33:55


3
File theFile = new File(uri); 

Неправильный метод. Вы получаете доступ к URL, а не к файлу.

Ваш код должен выглядеть следующим образом:

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

ok Я сделал это таким образом, в netbeans он работает, но открытие апплета в браузере не считывает данные. что здесь может быть неправильным? 22 фев. 092009-02-22 10:11:49

  0

java.security.AccessControlException: доступ запрещен (java.net.SocketPermission root.xelluloid.de:80 connect, resolve) , похоже, проблема безопасности? 22 фев. 092009-02-22 10:16:58

  0

По умолчанию апплеты и приложения WebStart могут обращаться только к серверу, с которого они были загружены (политика «того же происхождения»). Если апплет загружен из файловой системы, сетевого происхождения нет. 22 фев. 092009-02-22 11:18:16

  0

BTW: Это должно быть окончательным InputStream in = url.openStream(); try {(... читать файл ...)} наконец {in.close(); } 22 фев. 092009-02-22 11:19:46

  0

Вы можете обойти эту политику, упаковали ее как JAR и подписывали ее. Пользователь получит диалоговое окно подтверждения, где он должен разрешить расширенный доступ для вашего апплета (доверьте ему). После этого вы можете получить доступ к его полной файловой системе и открыть подключения к любому серверу. 22 фев. 092009-02-22 17:36:59

  0

Я сделал файл ressource, и поэтому он работал finde без сообщения безопасности при подписании его =), но спасибо за все 25 фев. 092009-02-25 08:09:39


1

Вам нужно будет подписать апплет, если файл не выполняется доступ из того же сервера/порт, который апплет пришел.