2013-06-27 1 views
-1

У меня есть эта кнопка, которая предназначена для открытия текстового файла для легкой настройки. Он отлично работает, когда я помещаю текстовый файл в тот же каталог, но когда я пытаюсь поместить его в вспомогательный каталог и изменить путь к «config/gameItems.txt», он ничего не делает, даже не скажите мне, что он может Найти файл. Есть предположения?Кнопка для открытия текстового файла не будет работать с текстовым файлом, а не в корневом каталоге класса

 JButton itemsButton = new JButton("Items"); 
      //Add action listener to button 
      itemsButton.addActionListener(new ActionListener() { 

      public void actionPerformed(ActionEvent e) 
      { 
       //Execute when button is pressed 
       try { 
       Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "config/gameItems.txt"); 
       } catch (Exception a) { 
       System.out.println("File not found"); 
       } 
      } 
      }); 
+0

1) * «Любые мысли?» * Для лучшей помощи раньше, отправьте сообщение [SSCCE] (http://sscce.org/). 2) Почему бы не открыть текстовый файл в 'JTextArea'? 3) Что находится в файле? 4) Даже если файл нуждается в редактировании, использование 'Dekstop.getDesktop(). Open (File)' будет намного более надежным (оно будет работать на OS X & * nix, с одной стороны). –

+0

Если вы продолжаете с 'exec' .. Читать (и реализовывать) * все * рекомендации [Когда Runtime.exec() не будет] (http://www.javaworld.com/jw-12-2000/jw- 1229-traps.html). Это может решить проблему. Если нет, он должен предоставить дополнительную информацию о причине отказа. Затем проигнорируйте, что он ссылается на 'exec' и создает' Process' с помощью 'ProcessBuilder'. Также разбивайте 'String arg' на' String [] args' для учета аргументов, которые сами содержат пробелы. –

ответ

1

Поскольку вы делаете это на Windows попробуйте сделать это:

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "config\\gameItems.txt"); 
+0

Спасибо! Это отлично поработало. –

+0

Также рассмотрите ['ProcessBuilder'] (http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html). – trashgod

1

Это окно конкретный код, я думаю, что проблема с помощью файла разделителя «/» вместо внесения «\», попробуйте изменить код

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "config\\gameItems.txt"); 
+0

Извините, не знал, кто ответил первым. Вы получаете +1. –