找不到文件,尽管它存在(Java)

时间:2018-04-18 22:56:59

标签: java resources java-io

我正在尝试从Java代码中读取javascript文件内容。这是我的代码:

 String javascript = "";
 URL url = getClass().getResource("/elementController.js");
 System.out.println(url.toString());
 try {
     Scanner sc = new Scanner(new File(url.getPath()));
     while (sc.hasNext()) {
         javascript += sc.nextLine() + "\n";
     }
     sc.close();

     } catch (Exception e) {
         e.printStackTrace();
     }

System.out.println打印以下内容: 文件: /C:/Users/J%c3%bcesse/IdeaProjects/JavaFxProject/target/classes/elementController.js

由于此代码执行,我得到以下stacktrace:

java.io.FileNotFoundException: C:\Users\J%c3%bcesse\IdeaProjects\ThesisProject\target\classes\elementController.js (The system cannot find the path specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.util.Scanner.<init>(Scanner.java:611)
at gui.WebViewWindow$MyBrowser.<init>(WebViewWindow.java:82)
at gui.WebViewWindow.display(WebViewWindow.java:58)

但是当我去javascript文件所在的目录时,我可以看到它就在那里。目录图片:

Directory structure

我不知道为什么我会收到此错误,即使该文件存在。 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

角色ü正在以网址格式转换为%c3%bc。但是,当您尝试将该路径用作文件输入的常规文件路径时,不会打开%c3%bc而不是打开URL输入流,而且文件名不匹配,因此FileNotFoundException

答案 1 :(得分:1)

URL不是文件名,资源不是文件。出于这两个原因,您无法使用function getMovie2() { var movie = []; movie = (GetCookie("cart")); var r = movie.length; alert(r); $("#table1").empty(); for (var i = 0; i < r; i += 1) { $("#table1").append("<tr><td>" + movie[i] + "</td><td>"); } }。将资源打包到JAR文件后,整个方案将崩溃​​。您需要使用资源的输入流:

FileInputStream

由于您只是阅读行,因此没有充分理由实际使用URL url = getClass().getResource("/elementController.js"); System.out.println(url.toString()); try { Scanner sc = new Scanner(url.openStream()); :您也可以使用Scanner