【问题标题】:Copy Resource File to Folder? [closed]将资源文件复制到文件夹? [关闭]
【发布时间】:2009-07-21 20:07:40
【问题描述】:

我需要从 Java 桌面应用程序生成复杂的文本文件。

我已经决定,如果我可以复制一个模板文件并根据需要构建的任何内容对其进行定制,那么代码将更容易实现。

我只会向客户分发一个罐子。是否有关于如何处理此问题的最佳实践?

  • 甚至可以在运行时从 jar 中复制资源吗?
  • 在首次执行 jar 时“自动生成”模板是否更好?

【问题讨论】:

  • 我不明白你想从哪里复制文件。你能说得清楚一点吗?模板文件在哪里?是在罐子里吗?您希望客户在启动应用程序后在他们的计算机上拥有此文件吗?

标签: java


【解决方案1】:

您可以使用以下方式读取存储在 jar 中的文件:

Class.getResourceAsStream(pathToFile);

详情请参阅question

【讨论】:

    【解决方案2】:

    是的,您可以从 JAR 中读取资源并将其写入文件系统。正如 kgiannakakis 建议的那样,您需要以流的形式获取资源。

    但是,使用哪个类加载器是模糊的。我经常看到在 Web 应用程序中应该使用上下文类加载器的建议:

    Thread.currentThread().getContextClassLoader().getResourceAsStream() 
    

    但是在快速搜索以确认这仍然是正确的建议时,很多人推荐当前的类加载器而不是上下文类加载器,尽管大多数人承认没有答案会在任何情况下都能完美工作。呸!

    在这一点上,我想说就像@kgiannakakis 建议的那样使用当前的类加载器——它更简单,而且不清楚使用上下文类加载器会更好。如果您遇到这种情况不起作用的情况,可以尝试使用上下文类加载器作为替代方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      相关资源
      最近更新 更多