在我的Java程序中,想通过调用dos命令,去执行一个python脚本,然后再下载该python脚本生成的文件到本地。问题代码地方:
strCmd = "cmd /c python "C:/prdcfg_convert.py" -i "C:/prdcfg_BLAZE.txt" -o "C:/123.bin"
Process child = Runtime.getRuntime().exec(strCmd);//这个能执行成功,因为生成后能打开123.bin,并且结果正确。
child.waitFor();
Download(strFile)//strFile文件为上面命令执行后的结果,在Download()函数中,查看该文件大小为0,我在调试时候,将strFile="C:/123.txt",能下载成功啊。 所以问题可能出现在调用dos命令的进程没有执行完。不知道怎么解决,哪位有过相关经验啊?

解决方案 »

  1.   

    我个人感觉,应该是Process child是在运行dos命令结束以后就返回了,相当于dos执行的命令去重新启动了一个进程去执行;
    是否这样楼主可以做一个验证,在waitFor后面做打印,看到打印数据以后用进程管理看看下载进程是否还在,如果还在就证明是我猜想的情况;如果是的话可以用一些其他的量来做这个判断,例如测试长度小于特定值就等待