gpt4 book ai didi

java.nio.file.InvalidPathException 与 getPath

转载 作者:行者123 更新时间:2023-12-02 12:51:12 26 4
gpt4 key购买 nike

我正在使用此代码

 String path =  getClass().getResource("Template.xls").getPath();

当我在我的机器(Windows)上运行它时,一切都很好。我什至在获取资源部分和获取路径部分上执行了 system.out.println ,结果是:

文件:/C:/Eclipse/Netbeans/SoftwareCom/build/classes/assets/Template.xls

/C:/Eclipse/Netbeans/SoftwareCom/build/classes/assets/Template.xls

但是我从一些用户那里收到以下错误报告

java.nio.file.InvalidPathException: Illegal char <:> at index 4:
file:\C:\Software%20Com\SoftwareCom.exe!\assets\Template.xls

我不确定发生了什么,或者为什么它对某些人有效,而对其他人无效

有什么指点吗?

最佳答案

要正确回答这个问题,了解您想如何处理路径信息会很有帮助。要读取该文件,您不需要路径。你可以直接打电话

getClass().getResourceAsStream("Template.xls")

如果你真的想知道路径,你应该调用

URL url = getClass().getResource("Template.xls");
Path dest = Paths.get(url.toURI());

这可能会导致问题,因为您似乎将 java 文件打包在 Windows 可执行文件中。请参阅Error in URL.getFile()

编辑您的评论:

正如我上面所写,您不需要复制源的路径。您可以使用

getClass().getResourceAsStream("Template.xls")

获取文件的内容并将内容写入到您想要写入的任何位置。失败的原因是第二个示例中的文件包含在可执行文件中:

 file:\C:\Software%20Com\SoftwareCom.exe

从路径可以看出:

file:\C:\Software%20Com\SoftwareCom.exe!\assets\Template.xls

感叹号表示该资源位于该文件内。它在 Netbeans 中工作,因为资源没有打包在 jar 中,而是文件系统上的单独文件。您应该尝试在您的计算机上运行 exe 版本。它很可能也会失败。如果您需要更多信息或帮助,请提供完整的代码。

关于java.nio.file.InvalidPathException 与 getPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com