2011-08-19 120 views
2

我想从java代码执行一些Unix命令。如何从java运行unix命令

我想从java代码运行logcat命令。

我使用下面的代码来做到这一点:

Process p = Runtime.getRuntime().exec("logcat -v time -f /mnt/sdcard/abc.txt"); 

上面的代码可以正常使用。

与我想运行其他一些Unix命令的方式一样。

我想运行“WC -l”(读取文件中的行号)命令,我想将它存储在某个整数中。

下面是我对这个编写的代码:

Process p = Runtime.getRuntime().exec("wc -l /mnt/sdcard/abc.txt"); 

但它引发异常下面。

08-19 05:34:53.457 W/System.err(1269): java.io.IOException: Error running exec(). Command: [wc, -l, /mnt/sdcard/abc.txt] Working Directory: null Environment: null 

    08-19 05:34:53.457 W/System.err(1269): at java.lang.ProcessManager.exec(ProcessManager.java:224) 

    08-19 05:34:53.457 W/System.err(1269): at java.lang.Runtime.exec(Runtime.java:189) 

    08-19 05:34:53.457 W/System.err(1269): at java.lang.Runtime.exec(Runtime.java:275) 

    08-19 05:34:53.457 W/System.err(1269): at java.lang.Runtime.exec(Runtime.java:210) 

请帮我什么在这个问题..

我在SD卡中的文件“的abc.txt”。

是否可以从android的java代码执行“WC -l”命令。

如果我们可以从java代码执行Unix命令,我们可以使文件操作变得更容易。

+1

你看了那个帖子:http://stackoverflow.com/questions/1410741/want-to-invoke -a-Linux的壳命令从-java的 –

回答

2

这里系统的列表/ bin中的机器人没有“WC”对不起

am     check_prereq dexopt  fsck_msdos iftop  keystore_cli mediaserver netd   ps   rild  service   stagefright  toolbox 
applypatch   chmod   df   gdbjithelper ime  kill   mkdir  netstat  qemud   rm   servicemanager start   top 
applypatch_static chown   dhcpcd  gdbserver  input  linker  monkey  newfs_msdos qemu-props rmdir  setconsole  stop   umount 
app_process  cmp   dmesg  getevent  insmod ln   mount  notify  racoon  rmmod  setprop   surfaceflinger updater 
audioloop   dalvikvm  dnsmasq  getprop  installd log   mtpd   omx_tests radiooptions route  sh    svc    vdc 
bmgr    date   dumpstate gzip   ioctl  logcat  mv   ping   reboot  run-as  showlease  sync   vmstat 
bootanimation  dbus-daemon dumpsys  hd   ionice logwrapper nandread  pm   record  schedtest skia_test  system_server vold 
bugreport   dd   dvz   id   iptables ls   ndc   pppd   recovery  schedtop sleep   tc    watchprops 
cat    debuggerd  flash_image ifconfig  keystore lsmod   netcfg  printenv  renice  sendevent smd    testid3   wipe 
1

wc在android上不存在。

dev:~ njzk2$ ./adb shell wc 
wc: not found 

但是,您可以考虑打开文件并从那里计算行数。