所以我是一名新的程序员,我一直在编程,大约一个多月了。我正在开发一个有趣的程序,要求输入用户名和密码,一旦正确,程序允许用户输入可以执行某些操作的命令。我发现使用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
答案 0 :(得分:0)
您可以使用ProcessBuilder
代替Runtime.getRuntime().exec
。 Process builder有一个目录方法,用于设置进程的工作目录。
来自Java Doc:
设置此流程构建器的工作目录。子进程 随后由此对象启动的start()方法将使用此作为 他们的工作目录。参数可以为null - 这意味着使用 当前Java进程的工作目录,通常是 由系统属性user.dir命名的目录,作为工作 子进程的目录。