2016-09-19 69 views
-3

我試圖讓用戶點擊一個按鈕時出現一個新的屏幕並自動運行一個命令行進程,他們能夠看到這個進程的輸出。在java中讀取命令行中的文件

我以爲我可以使用JTextArea來設置文本。

下面是我在此刻得到了:

runButton.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent r) 
      { 
       JFrame runFrame = new JFrame("Running process..."); 
       runFrame.setVisible(true); 
       runFrame.setSize(500, 400); 
       runFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
       runFrame.setLayout(null); 
       JTextArea run = new JTextArea(); 
       run.setBounds(100,50,300,200); 
       runFrame.add(run); 
       Runtime runtime = Runtime.getRuntime(); 
       Process process = null; 
       try 
       { 
        process = runtime.exec("cat /cmd/h:/testfile"); 
       } 
       catch (IOException e) 
       { 
        e.printStackTrace(); 
       } 
       InputStream runStream = process.getInputStream(); 
       InputStreamReader runStreamReader = new InputStreamReader(runStream); 
       BufferedReader br = new BufferedReader(runStreamReader); 
       String line; 
       StringBuilder sb = new StringBuilder(); 
       try 
       { 
        while ((line = br.readLine()) != null) 
        { 
         sb.append(line); 
        } 
       } 
       catch (IOException e) 
       { 
        e.printStackTrace(); 
       } 
       run.setText(sb.toString()); 
      } 
     }); 

我這個得到的錯誤是:

不能運行程序「貓」:CreateProcess的錯誤= 2,系統不能找到指定的文件

我試圖測試打開一個文件來測試這個,它只是包含隨機字母的行。

編輯:

我不知道我解釋清楚什麼,我需要這個做的。 我想要的是在打開文件的命令行中運行命令。然後我想讓命令行的結果輸出到JTextArea中。

編輯2:

我已經試過我的命令,切換到 「平riot.de -t」。這將每隔一段時間ping暴亂服務器,並返回響應時間和響應時間。

運行此時,新框架只是黑色,Java凍結。

+1

你在Windows上運行這個嗎? Windows上沒有'cat'命令。 – Jesper

+0

看起來像'/ cmd/h:/ testfile'不存在。你在Windows上運行cygwin嗎? –

+0

檢查路徑是否正確。 – Blobonat

回答

0

也許你的Java應用程序執行的環境沒有cat cmd的正確路徑?你有嘗試指定cat命令的絕對路徑嗎?

+0

我將如何去指定絕對路徑? – Plumel

+0

打開一個終端並用命令: 其中cat 獲得cat命令的絕對路徑。 嘗試使用那一個。 我希望我有幫助 – aurox

+0

謝謝,我會試試這個。 – Plumel