【发布时间】:2010-08-23 11:42:00
【问题描述】:
在以下程序中,我将名称命名为“don”,因此该命令将搜索 activedirectory 所有以 don 开头的名称(如 donald 等)。但是 line2 变量在读取器对象赋值后变为 null 并且它永远不会进入循环。我究竟做错了什么?仅供参考:当我在命令行上给出命令时,该命令有效。
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();
}
【问题讨论】:
-
你不应该这样做
p.waitFor();,在进程退出后尝试读取输出是没有意义的。删除该行。
标签: java process active-directory