2016-09-19 38 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