从终端或命令行运行时获取路径

时间:2014-10-20 14:06:59

标签: 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(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");
                }
            }
        }
    }
}

4 个答案:

答案 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);

应该也可以。