2015-08-18 4 views
0

Я разрабатываю проект с GWT и Netbeans. У меня есть RPC. Я поместил текстовый файл в пакет сервера «org.myname.server», и я хочу прочитать его с помощью метода на стороне сервера, принадлежащего классу GWTServiceImpl. Текстовый файл и файл GWTServiceImpl.java находятся в одном пакете. Код выглядит следующим образом:Я не могу прочитать текстовый файл в GWT

 String text=""; 
     try 
     { 
      BufferedReader br = new BufferedReader(new FileReader("file.txt")); 
      String line; 
      while((line = br.readLine()) != null) 
      { 
       text=text+line; 
       System.out.println("here is the line: "+line); 
      } 
      br.close(); 
     } 
     catch (Exception e) { } 
     return text; 

В нем говорится, что он не может получить доступ к файлу. Я не включил весь путь, потому что файл находится в той же папке метода. Так почему же это не работает?

+0

Метод запускается, потому что в конечном итоге вызывается обратный вызов. Но он не читает содержимое файла. – nix86

+1

** Никогда ** не пишите этот код 'catch (Exception e) {}'. Вы ловите исключения, не обрабатывая их. Это очень плохая практика. Добавьте system.out.println() в catch -block и посмотрите, получилось ли исключение. – Jens

ответ

2

Пути файлов не относятся к «классам», а относятся к «текущему рабочему каталогу», поэтому это будет зависеть от того, как запускается ваш сервер, и, вероятно, будет отличаться в разработке и производстве.

Если файл упакован в качестве ресурса в вашем веб-приложение, а затем использовать соответствующий способ его загрузки: если это в WEB-INF/classes или в баночке в WEB-INF/lib, а затем использовать getClass().getResourceAsStream("file.txt"); в противном случае используйте ServletRequest#getResourceAsStream().

1

Да, Томас прав. Таким образом, для создания буферизованного считывателя код выглядит следующим образом:

InputStream is= getClass().getResourceAsStream(filepath); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
Смежные вопросы