Java 从终端或命令行运行时获取路径
我试图制作一个程序,将从终端或命令行运行。您必须在参数中提供文件名。我希望它能够获得程序运行的路径,然后将文件名附加到它。应该是这样的:Java 从终端或命令行运行时获取路径,java,Java,我试图制作一个程序,将从终端或命令行运行。您必须在参数中提供文件名。我希望它能够获得程序运行的路径,然后将文件名附加到它。应该是这样的: public static void main(String[] args) { Scanner scanner = new Scanner(System.in); if (args.length > 0) { if (args[0] instanceof String && !args[0].equals
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
if (args.length > 0) {
if (args[0] instanceof String && !args[0].equals(null)) {
if (args[0].equals("compile")) {
System.out.println("File to compile:");
String fileName = scanner.next();
String path = /*get the path here*/ + fileName;
File textfile = new File(path);
if (textfile.exists()) {
Compiler compiler = new Compiler(textfile);
compiler.compile();
} else {
System.out.println("File doesn't exist");
}
}
}
}
}
这应该适合您:
Paths.get("").toAbsolutePath().toString()
您可以通过以下方式进行测试:
System.out.println("" + Paths.get("").toAbsolutePath().toString());
如果我理解正确,您正在尝试获取程序所在的路径 如果是,您可以尝试以下方法:
URI path = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath().toURI());
试试这个:
String path = System.getProperty("user.dir") + "/" + fileName;
将
/*获取此处的路径*/
替换为路径。获取(“.”
将获得您想要的。如果参数是同一目录中的文件名,则无需提供指向该文件的路径即可创建文件对象
所以在你的情况下
File textfile = new File(fileName);
应该也能工作。如果我解释得不够好,很抱歉,但是如果任何最终用户从任何目录运行路径,我希望能够获取路径。当程序通过terminal/cmd运行时,我需要能够获取用户的cd地址。如果文件名不是以“://”或“/”开头(分别适用于Windows和Unix),Java将自动使用相对路径。但请记住,路径可以设为绝对路径(例如,/bla/bla&filename)