java问题: Runtime的exec方法执行svn的备份命令,命令执行完毕,但是并没有在相应的目录下生成备份文件?
代码如下:publicclassTest1{publicstaticvoidmain(String[]args)throwsIOException,Interrupted...
代码如下:
public class Test1 {
public static void main(String[] args) throws IOException, InterruptedException {
Process proc = null;
String line=null;
BufferedReader br = null;
proc = Runtime.getRuntime().exec("svnadmin dump F:/Repositories/TestRepo > d:/abc.svn");
Test2 t1 =new Test2(proc.getInputStream(),"stand");
Test2 t2 = new Test2(proc.getErrorStream(),"error");
t1.start();
t2.start();
int exitVal = proc.waitFor();
System.out.println(exitVal);
}
}
class Test2 extends Thread{
InputStream is;
String type;
public Test2(InputStream temp,String type){
this.is = temp;
this.type = type;
}
public void run(){
String line="";
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);;
try {
while ((line = br.readLine()) != null){
if(line.trim().length() > 0){
if("error".equals(type)){
System.out.println(line);
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
控制台显示结果:
* 已转存版本 0。
* 已转存版本 1。
* 已转存版本 2。
* 已转存版本 3。
* 已转存版本 4。
* 已转存版本 5。
* 已转存版本 6。
0
但是程序执行完毕后,并没有在d盘生成abc.svn这个文件。请问这是什么原因?
我把那条svn备份语句直接在cmd里执行,就没有问题 展开
public class Test1 {
public static void main(String[] args) throws IOException, InterruptedException {
Process proc = null;
String line=null;
BufferedReader br = null;
proc = Runtime.getRuntime().exec("svnadmin dump F:/Repositories/TestRepo > d:/abc.svn");
Test2 t1 =new Test2(proc.getInputStream(),"stand");
Test2 t2 = new Test2(proc.getErrorStream(),"error");
t1.start();
t2.start();
int exitVal = proc.waitFor();
System.out.println(exitVal);
}
}
class Test2 extends Thread{
InputStream is;
String type;
public Test2(InputStream temp,String type){
this.is = temp;
this.type = type;
}
public void run(){
String line="";
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);;
try {
while ((line = br.readLine()) != null){
if(line.trim().length() > 0){
if("error".equals(type)){
System.out.println(line);
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
控制台显示结果:
* 已转存版本 0。
* 已转存版本 1。
* 已转存版本 2。
* 已转存版本 3。
* 已转存版本 4。
* 已转存版本 5。
* 已转存版本 6。
0
但是程序执行完毕后,并没有在d盘生成abc.svn这个文件。请问这是什么原因?
我把那条svn备份语句直接在cmd里执行,就没有问题 展开
2个回答
展开全部
我也觉得这样不可行哦,有可能他的输出还有其他的接收方式呢!!看看API吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询