在下面的程序中,名称为“ don”,因此该命令将搜索活动目录,其所有名称均以don开头(例如donald等)。但是从读者对象分配后,line2变量变为空,并且永远不会进入循环。我究竟做错了什么?仅供参考:当我在命令行上输入命令时,该命令有效。
try { Process p = Runtime.getRuntime().exec( "dsquery user -name " + name + "* -limit 200|dsget user -samid -display"); p.waitFor(); BufferedReader reader = new BufferedReader( new InputStreamReader(p.getInputStream())); String line2 = reader.readLine(); HashMap<String,String> hmap = new HashMap<String,String>(); while (line2 != null) { line2 = line2.trim(); if (line2.startsWith("dsget")||line2.startsWith("samid")) { continue; } String[] arr = line2.split(" ",1); hmap.put(arr[0].toLowerCase(),arr[1].toLowerCase()); line2 = reader.readLine(); } reader.close(); line2 = reader.readLine(); }
如果我没记错的话,管道(或重定向)需要使用cmd.exe启动程序。就像是:
Process p = Runtime.getRuntime().exec("cmd /c dsquery user -name " + name + "* -limit 200|dsget user -samid -display");