使流程类动态化

时间:2016-06-12 03:03:12

标签: java

所以我是一名新的程序员,我一直在编程,大约一个多月了。我正在开发一个有趣的程序,要求输入用户名和密码,一旦正确,程序允许用户输入可以执行某些操作的命令。我发现使用Process类,并使用代码Runtime.getRuntime()。exec(“”);打开一个应用程序,但在某种意义上它是静态的,因为每个使用它的人的目录可能都不一样。我怎样才能让这种动态变化?我怎样才能使用户可以输入他们的目录,甚至程序可以自己检测目录?

我的主要课程中的一些代码:

while (caseValidation.caseCheckFlag == true) {
        caseValidation.SetCase();
            if (caseValidation.GetCase().equalsIgnoreCase("internet")) 
            {
                System.out.println("Command executed!");
                intCMD.fetchInternet();
            }
            else if (caseValidation.GetCase().equalsIgnoreCase("spotify")) 
            {
                System.out.println("Command executed!");
                musCMD.fetchSpotify();
            }
            else if (caseValidation.GetCase().equalsIgnoreCase("changeUsername")) 
            {
                //code here
            }
            else if (caseValidation.GetCase().equalsIgnoreCase("changePass")) 
            {
                //code here
            }
            else if (caseValidation.GetCase().equalsIgnoreCase("pictures")) 
            {
                //code here
            }
            else if (caseValidation.GetCase().equalsIgnoreCase("videos")) 
            {
                //code here
            }
            else if (caseValidation.GetCase().equalsIgnoreCase("music")) 
            {
                //code here
            }
            else if (caseValidation.GetCase().equalsIgnoreCase("documents")) 
            {
                //code here
            }
            // more cmds here in the future

InternetCMD类:

public class InternetCMD {

public void fetchInternet() throws IOException {
    Process internet = Runtime.getRuntime().exec("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
}

}

提前感谢您的任何建议! :d

1 个答案:

答案 0 :(得分:0)

您可以使用ProcessBuilder代替Runtime.getRuntime().exec。 Process builder有一个目录方法,用于设置进程的工作目录。

来自Java Doc:

  

设置此流程构建器的工作目录。子进程   随后由此对象启动的start()方法将使用此作为   他们的工作目录。参数可以为null - 这意味着使用   当前Java进程的工作目录,通常是   由系统属性user.dir命名的目录,作为工作   子进程的目录。