int k=0;
StringBuffer sb=new StringBuffer();
Process p1=Runtime.getRuntime().exec(cmd, env);
InputStream is=p1.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String temp="";
while((temp=br.readLine())!=null) {
sb.append(temp+"\r\n");
k++;
System.out.println(temp);
//System.out.println(k);
//if(k==5) break;
}
System.out.println(k);
//System.out.println(sb.toString());
fos.write(sb.toString().getBytes());
fos.flush();
br.close();
fos.close();
System.out.println("###over");
//p1.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}以上是代码的主要部分 就是执行一个命令 把输出结果写到一个文件里面 那个输出比较多 命令行大概1800多行吧
现在的问题是 while循环里面 执行到最后一行后 就停滞了 在任务管理器里面 关闭这个进程 在java程序里 下面的代码才接着执行 写入文件等等
这是什么原因? 我在命令行窗口运行那个命令的时候 执行完就回到了普通的提示状态比如C:\> 等等 并没有需要进一步操作 找个子进程为什么会阻塞呢》??
是不是因为标准输出内容太多? 如果是 有没有设么办法??
StringBuffer sb=new StringBuffer();
Process p1=Runtime.getRuntime().exec(cmd, env);
InputStream is=p1.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String temp="";
while((temp=br.readLine())!=null) {
sb.append(temp+"\r\n");
k++;
System.out.println(temp);
//System.out.println(k);
//if(k==5) break;
}
System.out.println(k);
//System.out.println(sb.toString());
fos.write(sb.toString().getBytes());
fos.flush();
br.close();
fos.close();
System.out.println("###over");
//p1.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}以上是代码的主要部分 就是执行一个命令 把输出结果写到一个文件里面 那个输出比较多 命令行大概1800多行吧
现在的问题是 while循环里面 执行到最后一行后 就停滞了 在任务管理器里面 关闭这个进程 在java程序里 下面的代码才接着执行 写入文件等等
这是什么原因? 我在命令行窗口运行那个命令的时候 执行完就回到了普通的提示状态比如C:\> 等等 并没有需要进一步操作 找个子进程为什么会阻塞呢》??
是不是因为标准输出内容太多? 如果是 有没有设么办法??
StringBuffer sb=new StringBuffer();
Process p1=Runtime.getRuntime().exec(cmd, env);
InputStream is=p1.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String temp="";
while((temp=br.readLine())!=null) {
sb.append(temp+"\r\n");
k++;
System.out.println(temp);
//System.out.println(k);
//if(k==5) break;
}
System.out.println(k);
//System.out.println(sb.toString());
fos.write(sb.toString().getBytes());
fos.flush();
System.out.println("###over");
//p1.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
br.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}