【问题标题】:Why opening a file input stream on file packaged in jar via getResource does't work? [duplicate]为什么通过 getResource 在 jar 中打包的文件上打开文件输入流不起作用? [复制]
【发布时间】:2016-10-29 00:03:31
【问题描述】:
InputStream inputStream = new FileInputStream(new File(this.getClass().getResource("/example.txt").getFile()))

这种方法会导致类似“/.../.../...jar!/example.txt (no such file or directory)”的错误。

InputStream inputStream = getClass().getResourceAsStream("/example.txt")

这个方法会正确运行。

那么,这两种方法有什么区别呢?为什么第一种方法行不通?

【问题讨论】:

  • 查看此链接stackoverflow.com/questions/14089146/…。也许这会对你有所帮助。
  • 好答案。这解决了我的难题。谢谢。
  • “如果你将你的应用打包成一个 jar 文件,或者你通过网络加载类,它就不会工作。”我只知道这不起作用,但仍然不知道为什么不起作用。你能解释更多吗? @Dharani

标签: java


【解决方案1】:

getResources 将返回您的应用程序资源。这些本质上是在编译时与您的应用程序一起存在并捆绑到您的应用程序中的资源。这些资源是只读的。为了修改它们,您必须将它们复制到其他地方(最好复制到您的应用程序私有文档目录中)。

getResourceAsStream 将为您提供任何给定资源的输入流。这可以是您的应用程序捆绑资源(如上所述),也可以动态创建。请记住,要使用 getResourceAsStream,您必须有权访问给定资源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 2018-10-31
    相关资源
    最近更新 更多