虽然文件存在但未找到 (Java)
File not found altough it exists (Java)
我正在尝试从 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
作为此代码执行的结果,我得到以下堆栈跟踪:
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文件所在的目录时,我可以看到它在那里。目录图片:
我不知道为什么会出现此错误,即使该文件存在于此。
有什么建议吗?
字符 ü
正在转换为 URL 格式的 %c3%bc
。但是,当您尝试将该路径用作文件输入的常规文件路径时,不会打开 URL 输入流,不会发生 %c3%bc
的反向解码,并且文件名不会匹配,因此 FileNotFoundException
.
A URL 不是文件名,资源也不是文件。由于这两个原因,您不能在其上使用 FileInputStream
。一旦资源被打包到您的 JAR 文件中,整个方案就会崩溃。您需要使用资源的输入流:
URL url = getClass().getResource("/elementController.js");
System.out.println(url.toString());
try {
Scanner sc = new Scanner(url.openStream());
由于您只是阅读行,因此实际上没有充分的理由使用 Scanner
:您也可以使用 BufferReader
.
我正在尝试从 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
作为此代码执行的结果,我得到以下堆栈跟踪:
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文件所在的目录时,我可以看到它在那里。目录图片:
我不知道为什么会出现此错误,即使该文件存在于此。 有什么建议吗?
字符 ü
正在转换为 URL 格式的 %c3%bc
。但是,当您尝试将该路径用作文件输入的常规文件路径时,不会打开 URL 输入流,不会发生 %c3%bc
的反向解码,并且文件名不会匹配,因此 FileNotFoundException
.
A URL 不是文件名,资源也不是文件。由于这两个原因,您不能在其上使用 FileInputStream
。一旦资源被打包到您的 JAR 文件中,整个方案就会崩溃。您需要使用资源的输入流:
URL url = getClass().getResource("/elementController.js");
System.out.println(url.toString());
try {
Scanner sc = new Scanner(url.openStream());
由于您只是阅读行,因此实际上没有充分的理由使用 Scanner
:您也可以使用 BufferReader
.