import java.io.IOException;
public class demo1
{
public static void main(String[] args) throws IOException, InterruptedException
{
String username = null;
String password = "admin";
for (int i = 1; i <= 10; i++)
{
username = "yulei" + i;
Runtime r = Runtime.getRuntime();
r.exec("cmd.exe /c start D:/svn/Apache2/bin/htpasswd.exe -b F:/passwd " + username + " " + password);
//Thread.sleep(3000); // 这里是我自己的本方法,休眠3秒,因为这个插入根本用不了3秒钟
}
}
}
D:/svn/Apache2/bin/htpasswd.exe是apache的路径
F:/passwd是个储存文件
现在的问题是,如果这样一个循环不等待,实际上只写入了几条,并不是全部。
我参考网络上面资料IO操作可以实现锁定文件,但是我只执行了一句cmd命令,并没有深入控制到IO的操作。
所以我的问题就是如何处理这样调用外部命令的并发操作。
我怎么才能知道上个r.exec()命令执行完了?又通过什么掉下个r.exec(),这个地方把我难住了
------解决方案--------------------
apache的htpasswd。我不是很熟。
1、如果不用java调用。写个bat文件,直接执行这个命令,是不是也是同样的情况(比如只有3行)
2、返回值path有没有打印出来?有可能接收不完全导致,你也可以考虑用IO流。