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)