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里执行,就没有问题
4 个解决方案
#1
哪位高手来给我解决一下啊,在线等
#2
貌似是exec方法直接把svnadmin dump F:/Repositories/TestRepo > d:/abc.svn 后面的
> d:/abc.svn 给忽略掉了,难道>是特殊字符,还是两个路径有问题?
> d:/abc.svn 给忽略掉了,难道>是特殊字符,还是两个路径有问题?
#3
怎么每次问的问题都没人知道啊?!!!
#4
执行的命令较长,里面包括多空格,多符号时有可能是执行失败。
LZ可以用将执行的命令写成批处理文件,然后执行批处理文件即可,这样顺便也实现解耦了,还保险。
比如:
String commandStr = "oper.bat";
Process process = Runtime.getRuntime().exec(commandStr);
把svnadmin dump F:/Repositories/TestRepo > d:/abc.svn 写到oper.bat中
LZ可以用将执行的命令写成批处理文件,然后执行批处理文件即可,这样顺便也实现解耦了,还保险。
比如:
String commandStr = "oper.bat";
Process process = Runtime.getRuntime().exec(commandStr);
把svnadmin dump F:/Repositories/TestRepo > d:/abc.svn 写到oper.bat中
#1
哪位高手来给我解决一下啊,在线等
#2
貌似是exec方法直接把svnadmin dump F:/Repositories/TestRepo > d:/abc.svn 后面的
> d:/abc.svn 给忽略掉了,难道>是特殊字符,还是两个路径有问题?
> d:/abc.svn 给忽略掉了,难道>是特殊字符,还是两个路径有问题?
#3
怎么每次问的问题都没人知道啊?!!!
#4
执行的命令较长,里面包括多空格,多符号时有可能是执行失败。
LZ可以用将执行的命令写成批处理文件,然后执行批处理文件即可,这样顺便也实现解耦了,还保险。
比如:
String commandStr = "oper.bat";
Process process = Runtime.getRuntime().exec(commandStr);
把svnadmin dump F:/Repositories/TestRepo > d:/abc.svn 写到oper.bat中
LZ可以用将执行的命令写成批处理文件,然后执行批处理文件即可,这样顺便也实现解耦了,还保险。
比如:
String commandStr = "oper.bat";
Process process = Runtime.getRuntime().exec(commandStr);
把svnadmin dump F:/Repositories/TestRepo > d:/abc.svn 写到oper.bat中