2013-05-06 128 views
0

我做了这段代码来移动一个文件夹,然后将它链接到它的原始目的地。这个问题它完全工作,当我只是从eclipse尝试它,但当它进入它自己的自执行jar它不会创建硬链接,但它会移动文件夹。代码运行一个命令行,然后输入命令。我不知道这个移动命令是否起作用,而不是另一个。请帮忙。 (Mklink命令)运行来自JAVA的CMD命令

import java.io.*; 
import javax.swing.JOptionPane; 

public class The_Cloud_Setup { 
    public static void main(String[] args) throws IOException 
    { 
     try { 
      String command = "c:\\cmd.exe"; 
      Runtime.getRuntime().exec(command); 
     } 
     catch (IOException e){ 
      JOptionPane.showMessageDialog(null , e.getMessage(), "End Result", 2); 
      System.err.println(e.getMessage()); 
     } 
     String[] StringMove = { "cmd.exe", "/c", "move"+" "+"\"C:/Users/%username%/Documents/My Games/Terraria/Players\""+" "+"\"C:/Users/%username%/Google Drive/Players\""}; 
     String[] StringMklink = {"cmd.exe", "/c", "mklink"+" "+"/d"+" "+"\"C:/Users/%username%/Documents/My Games/Terraria/Players\""+" "+"\"C:/Users/%username%/Google Drive/Players\""}; 
     Process ProcessMove = Runtime.getRuntime().exec(StringMove); 
     Process ProcessMklink = Runtime.getRuntime().exec(StringMklink); 
     BufferedReader VarMove = new BufferedReader(new InputStreamReader(ProcessMove.getInputStream())); 
     BufferedReader VarMklink = new BufferedReader(new InputStreamReader(ProcessMklink.getInputStream())); 
     String temp = ""; 
     while ((temp = VarMove.readLine()) != null) { 
      System.out.println(temp); 
     } 
     VarMove.close(); 
     VarMklink.close(); 
    } 
} 
+0

根据Java约定,您应该使用小写字符来启动变量名称。 – 2014-08-06 17:04:58

回答

0

最有可能的,当你在本地运行,你的程序试图执行mklink命令之前移动命令尚未完成。您不能在有现有文件夹的地方建立链接。

+0

是的,没有,我只是将它折叠成一个exe文件,我可以作为管理员运行,并且它可以正常运行,但是非常感谢 – RexPRGMER 2013-05-08 21:48:59