我正在尝试创建一个将从终端或命令行运行的程序。您必须在参数中提供文件名。我希望它能够获取程序运行的路径,然后将文件名附加到它。它会是这样的:
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");
}
}
}
}
}
答案 0 :(得分:1)
这应该适合你:
Paths.get("").toAbsolutePath().toString()
您可以通过以下方式进行测试:
System.out.println("" + Paths.get("").toAbsolutePath().toString());
答案 1 :(得分:1)
试试这个:
String path = System.getProperty("user.dir") + "/" + fileName;
答案 2 :(得分:0)
如果我理解你正确,你正试图找到程序所在的路径。
如果是这样,您可以尝试以下方法:
URI path = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath().toURI());
答案 3 :(得分:0)
用/*get the path here*/
替换Paths.get(".")
可以获得您想要的效果。如果您的参数是同一目录中的文件名,则不必提供创建File对象的路径。
所以在你的情况下,
File textfile = new File(fileName);
应该也可以。