我正在从cmd运行java程序,如java Main
。但在此之前,我必须使用cd ...
到达路径目录,因为我的Main类正在重写属性文件中的值,该文件位于根目录中。是否有设置根目录的方法或选项,那么我将不需要使用cd
命令到达此目录?
答案 0 :(得分:0)
您可以将路径作为参数传递到目录,然后从String[] args
方法中main
进入。您将绝对路径传递给文件,并且与您启动Java进程的目录无关。
以下oracle's tutorial展示了如何做到这一点。
答案 1 :(得分:0)
使用while
循环和一些简单的字符串处理,通过命令提示符导航到目录非常简单:
System.out.println("Please navigate to the desired directory then type 'done'...");
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
StringBuilder path = new StringBuilder(); //Storage for dir path
path.append(System.getenv("SystemDrive"));
while(scanner.hasNextLine()) {
String command = scanner.nextLine(); //Get input
if(command.equalsIgnoreCase("done")) {
break;
}else if(command.startsWith("cd")){
String arg = command.replaceFirst("cd ", ""); //Get next dir
if(!arg.startsWith(System.getenv("SystemDrive"))) { //Make sure they are not using a direct path
if(!new File(path.toString() + "/" + arg).exists()) { //Make sure the dir exists
arg = arg.equalsIgnoreCase("cd") ? "" : arg;
System.out.println("Directory '" + arg + "' cannot be found in path " + path.toString());
}else {
if(arg.equals("..."))
path = new StringBuilder(path.substring(0, path.lastIndexOf("/"))); //StringBuilder#substring does not alter the actual builder
else
path.append("/" + arg);
System.out.println("\t" + path.toString()); //Add the dir to the path
}
}else { //If they are using a direct path, delete the currently stored path
path = new StringBuilder();
path.append(arg);
System.out.println("\t" + path.toString());
}
}else if(command.equalsIgnoreCase("dir")) {
System.out.println(Arrays.toString(new File(path.toString() + "/").list()));
//List the dirs in the current path
}else {
System.out.println("\t" + command + " is not recognized as an internal command.");
}
}
//Get your file and do whatever
File theFile = new File(path.toString() + "/myFile.properties");
答案 2 :(得分:0)
您可以使用Java的-cp
(classpath)命令行参数。
然后,如果您的目录结构是
<application folder>
|
|--config.props (properties file)
|
\--bin
|
|--Main.class
|
|... other classes
您可以转到<application folder>
并使用java -cp bin Main
启动该应用程序。它可以将config.props
称为当前文件夹中的文件(因为它位于当前文件夹中)。
由于这是您可能不想一直输入的内容,因此它可以包含在Windows .bat文件或* nix .sh脚本中,位于config.props
旁边。