Jeg forsøger at eksekvere en exe fil fra min java applikation ved at benytte nedestående kommando:
public void cmd() { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { try { String line; Runtime rt = Runtime.getRuntime(); Process p = rt.exec("c:\\STK500\\Stk500.exe -dATMEGA128 -ms -re -oetest.hex"); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); while ((line = input.readLine()) != null) { System.out.println(line); } input.close(); } catch (Exception err) { err.printStackTrace(); } } }); }
Filen tager omkring et minut og der bliver løbende udsendt status meldinger, disse status meldinger ville jeg også gerne vise løbende, men hvordan? Pt. "hænger" programmet indtil det er færdig eksekveret og det er jo ikke lige det jeg vil. Kan man overhovedt få "løbende" statusmeldinger?
public class ShowDir extends JFrame implements ActionListener, Runnable { private JButton show; private JTextField dir; private JTextArea dirlist;
public ShowDir() { getContentPane().setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 400); dir = new JTextField(); getContentPane().add(dir, BorderLayout.NORTH); dirlist = new JTextArea(); getContentPane().add(new JScrollPane(dirlist), BorderLayout.CENTER); show = new JButton("Vis dir indhold"); show.addActionListener(this); getContentPane().add(show, BorderLayout.SOUTH); }
public void actionPerformed(ActionEvent evt) { dirlist.setText(""); Thread t = new Thread(this); t.start(); }
public void run() { Process p; try { p = Runtime.getRuntime().exec("CMD /C DIR " + dir.getText() + " /S"); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = br.readLine()) != null) { dirlist.setText(dirlist.getText() + line + "\r\n"); } } catch (IOException e) { } }
public static void main(String[] args) { ShowDir f = new ShowDir(); f.setVisible(true); } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.