我在 eclipse 中创建了一个 Maven Web 应用程序项目,它在我制作此项目的机器上运行良好。但是当在 Eclipse 中将此项目导入到其他机器时,它在获取文件时给了我这个异常:
exception:D:\Eclipse%20Workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\example\WEB-INF\classes\file.txt (The system cannot find the path specified)
我正在使用此代码来获取文件:
public File getFile (String fileName) {
//Get file from resources folder
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());
return file;
}
该文件位于项目的资源文件夹中:
D:\Eclipse Workspace\Sentiment Analysis\example\src\main\resources
我进入异常消息显示的路径,发现该文件已经在那里。
最佳答案
URL 的 getFile
方法不会将 URL 转换为文件。它仅返回主机和端口之后的 URL 部分。 URL 需要对许多字符(包括空格)进行百分比转义,因此您无法可靠地使用 URL 的路径部分作为文件名。事实上,异常正在准确地告诉您:您的计算机上没有名为 D:\Eclipse%20Workspace.metadata.plugins
的目录。 (继续检查。)
当您拥有 URL 时,您根本不应该尝试将其转换为文件。你不需要。您可以像使用 openStream method 从文件中一样轻松地从 URL 中读取数据。网址。
但即使这样也不是必需的,因为您还可以使用 getResourceAsStream 方法完全跳过 URL 并获取可读的 InputStream:
InputStream stream = getClass().getResourceAsStream("/file.txt");
关于java - 无法使用 classLoader.getResource(fileName).getFile() 获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36967014/