如何获取java文件的路径,包括/ src /

时间:2017-10-17 13:45:38

标签: java eclipse

即时开发可以在PC上编译/运行现有java文件的项目。

大多数代码工作得很好,但我在获取java文件的路径时遇到了问题。

这是有问题的代码

void uploadJ() {    
    System.out.print("Insert File name : "); //ex)HelloWorld.java
    FileName = sc.next(); 
    }

void Compile(){ 
    String s = null;
    File file = new File(FileName);
    String path = file.getAbsolutePath();

    try {
        Process oProcess = new ProcessBuilder("javac", path).start();
        BufferedReader stdError = new BufferedReader(
            new InputStreamReader(oProcess.getErrorStream()));
        while ((s = stdError.readLine()) != null) {
                FileWriter fw = new FileWriter(E_file, true);
                fw.write(s);
                fw.flush();
                fw.close();
        } 
    } catch...
}

例如,当我将HelloWorld.java作为文件名时,

HelloWorld.java的绝对路径应为 C:\ Users \ user \ eclipse- 工作空间\ TermProject \ SRC \ HelloWorld.java

但结果是 C:\ Users \ user \ eclipse- 工作空间\ TermProject \ HelloWorld.java

它错过了 / src / 所以它始终以 javac:找不到文件错误结束。 < / p>

1 个答案:

答案 0 :(得分:0)

编译应用程序后,将没有src目录。此工作目录也可以设置为任何内容。 您也不能保证您要查找的文件是实际文件,在jar文件的上下文中,它不是。

但是,您可以从类路径加载文件。您可以使用Class#getResourceAsStream(String)

  

查找具有给定名称的资源。搜索与给定类关联的资源的规则由类的定义类加载器实现。

查找文件可以通过调用this.getClass().getResourceAsStream("/" + FileName)来完成,/会导致从资源根目录进行搜索。

要与javac一起使用,您必须创建一个临时文件,并使用从getResourceAsStream获得的数据流填充该文件。