找不到文件错误

时间:2010-06-19 10:53:08

标签: java file-io

我已将文件传递给库,并且库正在吐出FileNotFound错误,如下所示:

javax.xml.transform.TransformerException: java.io.FileNotFoundException: file:\C:\Users\Oroma\workspace\IndividualProject_JINQS\WebContent\WEB-INF\classes\presentationlayer\utility\mappings\jmt\networkModel.xml (The filename, directory name, or volume label syntax is incorrect)

调用此方法发送文件:

 private URI getFileLocation(String fName) throws URISyntaxException {
    return this.getClass().getResource("utility/mappings/jmt/"+ fName).toURI();
 }

因此,如果文件不存在,我会在将文件发送到JSIM库之前获得空指针方式。

我正在查看错误消息:(The filename, directory name, or volume label syntax is incorrect)。查看文件的完整路径,我看不到任何特殊字符。

有没有人知道可能导致错误的原因是什么?

编辑: 调用其他库的方法需要发送文件:

SolverDispatcher solver = new SolverDispatcher();
File networkModel = new File(getFileLocation("networkModel.xml"));
solver.solve(networkModel);

4 个答案:

答案 0 :(得分:0)

您调用的方法是否需要URI或文件名?也就是说,它是否期望该文件:在开始时?

答案 1 :(得分:0)

我可能错了。我只是在猜测。 通常文件的绝对URL以

开头
file:///

在异常中我将其视为

file:\

答案 2 :(得分:0)

没有从ResourceFile的直接转换。您可以尝试从路径中删除“file:\”部分,但它可能不适用于所有情况,即。当作为applet运行时,因为您无法打开具有安全模型的File对象。

读取资源内容的最佳方法是获取InputStream:

private InputStream getFileLocation(String fName) throws URISyntaxException {
    return this.getClass().getResourceAsStream("utility/mappings/jmt/"+ fName);
}

SolverDispatcher solver = new SolverDispatcher();
InputStream networkModelStream = getFileLocation("networkModel.xml");
solver.solve(networkModelStream);

答案 3 :(得分:0)

我会尝试获取一些调试信息,可能会添加一些打印

    private URI getFileLocation(String fName) throws URISyntaxException {
        URL url = this.getClass().getResource("utility/mappings/jmt/"+ fName);
        System.out.printf("url: %s%n", url);
        return url.toURI();
     }

    SolverDispatcher solver = new SolverDispatcher();
    URI uri = start.getFileLocation("networkModel.xml");
    System.out.printf("uri: %s%n", uri);
    File networkModel= new File(uri);
    System.out.printf("file: %s - %s%n", networkModel, networkModel.exists()); 
    solver.solve(networkModel);

最后一个输出(文件)的协议部分为“file:\”。