我正在为我的一个类实现一个Branch Predictor,并且尝试从Eclipse中的src文件夹中读取文件,但是由于某种原因,它无法打开文件。我之前使用完全相同的过程进行过此操作,所以我不确定有什么不同。
traceFile是从命令行设置的,如果我打印“ input”,它将打印出正确的文件路径,并且我已经确认手动存在。
ClassLoader loader = BiModalPredictor.class.getClassLoader();
File input = new File(loader.getResource(traceFile).getFile());
Scanner fin = new Scanner(input);
关于为什么会发生这种情况有任何见解吗?我尝试过重新启动Eclipse,刷新文件,并且还在另一个有效的程序上对其进行了测试。不知道为什么找不到this文件。
[classpath上的资源,即可通过classloaders getResource
方法获得的资源,当您将应用程序部署为jar文件或一般部署时,将不是文件系统上的文件。请勿对此类资源使用getResource
,而应使用File
访问资源内容。
此外,您的代码是错误的。 getResourceAsStream
返回一个getResourceAsStream
。如果要从getResource()
中获取URL
对象,则应使用URL
,其中通过调用File
获得URL
。
new File(uri)