Changeset 660


Ignore:
Timestamp:
01/07/14 16:08:46 (10 years ago)
Author:
jts21
Message:

Add action to execute external programs and return their output. Only really useful on *nix.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/actions/Misc.java

    r658 r660  
    77import java.awt.image.BufferedImage;
    88import java.awt.image.VolatileImage;
     9import java.io.BufferedReader;
    910import java.io.File;
    1011import java.io.FileNotFoundException;
    1112import java.io.IOException;
     13import java.io.InputStreamReader;
    1214import java.lang.reflect.Method;
    1315import java.net.URL;
     
    15331535        }
    15341536       
    1535         public static Text settings() {
    1536                 Text t = DisplayIO.getCurrentFrame().createNewText("Settings");
    1537                 Settings.generateSettingsTree(t);
    1538                 return t;
     1537        public static String exec(String cmd) throws Exception {
     1538               
     1539                String[] command;
     1540               
     1541                // run command through sh if possible
     1542                if(System.getProperty("os.name").toLowerCase().indexOf("win") == -1) {
     1543                        command = new String[] { "sh", "-c", cmd };
     1544                } else {
     1545                        command = cmd.split("\\s+");
     1546                }
     1547               
     1548                ProcessBuilder pb = new ProcessBuilder(command);
     1549        pb.redirectErrorStream(true);
     1550        Process ps = pb.start();
     1551   
     1552        BufferedReader in = new BufferedReader(new InputStreamReader(ps.getInputStream()));
     1553        StringBuffer sb = new StringBuffer();
     1554        String line;
     1555        while ((line = in.readLine()) != null) {
     1556            sb.append(line).append('\n');
     1557        }
     1558        ps.waitFor();
     1559        in.close();
     1560       
     1561        if(sb.length() > 0) {
     1562                sb.deleteCharAt(sb.length() - 1);
     1563        }
     1564                return sb.toString();
    15391565        }
    15401566}
Note: See TracChangeset for help on using the changeset viewer.