У меня есть код, который выполняет команду в окне Linux (ls - latr /home/ars | awk '{if(NR>1)print}'
), которая дает мне список каталогов вместе с его информацией.Как поместить его в какой-либо массив или список, чтобы в зависимости от каждой строки я мог получить имя файла, разрешения и т. Д. из (списка или массива) !!
Вот мой код, который печатаетвывод в нижней части моего вопроса здесь cmd=ls - latr /home/ars | awk '{if(NR>1)print}'
вызов функции
HashMap<String,String> params = IntermediateResults.get("userparams")
Map env=AppContext.get(AppCtxProperties.environmentVariables)
def fClass = new GroovyClassLoader().parseClass( new File( 'plugins/infa9/Infa9CommandExecUtil.groovy' ) )
String cmd="ls -latr "+rrs.get("linkpath")+" | awk '{if(NR>1)print}'"
String res=fClass.newInstance().fetchInformation( params, env, cmd )
моя функция называется
public String fetchInformation( Map<String,String> params, Map env, String cmd )
{
try
{
Process proc = Runtime.getRuntime().exec(cmd);
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null)
{
result.append(line);
println "$line" // This output is given at the end
}
int exitVal = proc.waitFor();
}
catch (IOException io)
{
io.printStackTrace();
}
catch (InterruptedException ie)
{
ie.printStackTrace();
}
//println("\n\n"+result)
return result
}
мой вывод
/data/u01/app/oracle/10.2.0/db_1:
total 260
-rwxr-xr-x 1 oracle dba 0 Jun 7 2005 root.sh.old
drwxr-xr-x 4 oracle dba 4096 Jan 17 2007 xdk
drwxr-xr-x 4 oracle dba 4096 Jan 17 2007 uix
drwxr-xr-x 3 oracle dba 4096 Jan 17 2007 tg4tera
drwxr-xr-x 3 oracle dba 4096 Jan 17 2007 tg4sybs
drwxr-xr-x 3 oracle dba 4096 Jan 17 2007 tg4ingr
drwxr-xr-x 3 oracle dba 4096 Jan 17 2007 tg4ifmx
Так как я могу поместить вышеприведенный вывод в некоторый Список, чтобы в каждой строке я мог получить разрешения, жесткую ссылку, владельца, группу, размер файла, месяц, дату, время, год и, наконец, имя файла ?
Обновление
Это то, что я пытаюсь сделать, есть ли лучший способ, используя карты?
List<List<String>> frows = new ArrayList<List<String>>()
while ((line = br.readLine()) != null)
{
List<String> fileList= new ArrayList<String>()
result.append(line);
String[] strs = line.split(" ")
for(item in strs)
{
//print "$item "
fileList.add(item)
}
frows.add(fileList)
}
for (List<String> l : frows)
{
for (String s : l) {
print "$s"
}
println ""
}