001package com.pi4j.util; 002 003/* 004 * #%L 005 * ********************************************************************** 006 * ORGANIZATION : Pi4J 007 * PROJECT : Pi4J :: Java Library (Core) 008 * FILENAME : ExecUtil.java 009 * 010 * This file is part of the Pi4J project. More information about 011 * this project can be found here: http://www.pi4j.com/ 012 * ********************************************************************** 013 * %% 014 * Copyright (C) 2012 - 2015 Pi4J 015 * %% 016 * This program is free software: you can redistribute it and/or modify 017 * it under the terms of the GNU Lesser General Public License as 018 * published by the Free Software Foundation, either version 3 of the 019 * License, or (at your option) any later version. 020 * 021 * This program is distributed in the hope that it will be useful, 022 * but WITHOUT ANY WARRANTY; without even the implied warranty of 023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 024 * GNU General Lesser Public License for more details. 025 * 026 * You should have received a copy of the GNU General Lesser Public 027 * License along with this program. If not, see 028 * <http://www.gnu.org/licenses/lgpl-3.0.html>. 029 * #L% 030 */ 031 032 033import java.io.BufferedReader; 034import java.io.IOException; 035import java.io.InputStreamReader; 036import java.util.ArrayList; 037import java.util.List; 038 039public class ExecUtil 040{ 041 public static String[] execute(String command) throws IOException, InterruptedException { 042 return execute(command, null); 043 } 044 045 public static String[] execute(String command, String split) throws IOException, InterruptedException { 046 List<String> result = new ArrayList<>(); 047 Process p = Runtime.getRuntime().exec(command); 048 p.waitFor(); 049 050 if(p.exitValue() != 0) 051 return null; 052 053 InputStreamReader isr = new InputStreamReader(p.getInputStream()); 054 BufferedReader reader = new BufferedReader(isr); 055 String line = reader.readLine(); 056 while (line != null) { 057 if (!line.isEmpty()) { 058 if (split == null || split.isEmpty()) { 059 result.add(line.trim()); 060 } else { 061 String[] parts = line.trim().split(split); 062 for(String part : parts) { 063 if (part != null && !part.isEmpty()) { 064 result.add(part.trim()); 065 } 066 } 067 } 068 } 069 line = reader.readLine(); 070 } 071 072 // close readers and stream 073 reader.close(); 074 isr.close(); 075 p.getInputStream().close(); 076 077 if (result.size() > 0) { 078 return result.toArray(new String[result.size()]); 079 } else { 080 return new String[0]; 081 } 082 } 083}