【问题标题】:Access file from another package从另一个包访问文件
【发布时间】:2012-11-14 14:52:54
【问题描述】:

我的情况如下:我有包packA,我有classA,我在packB.resources 有一个file.txt。在classA,我使用它来访问file.txt

InputStreamReader in = new InputStreamReader(new FileInputStream("/packB/resources/file.txt"), "UTF-8");

但不幸的是,它向我展示了一个例外:

java.io.FileNotFoundException : \packB\resources\file.txt (The 未找到指定路径)

【问题讨论】:

  • 代码和错误信息不匹配。代码使用"resources",但错误消息显示"ressources"
  • @hmjd : 帖子已更新,谢谢。

标签: java package inputstreamreader


【解决方案1】:

FileInputStream 类根据文件系统路径打开文件系统中的文件。

但是您显然想要做的是打开通过类路径定位的资源。你应该使用Class.getResourceAsStream(String)

【讨论】:

    【解决方案2】:

    如果您的file.txt 与应用程序打包在一起,则根本不应该使用文件系统访问。应用程序可能被打包到 jar 中,因此文件不在文件系统中。您应该将其作为资源访问:

    InputStreamReader in = new InputStreamReader(getClass().getResourceAsStream("/packB/resources/file.txt"), "UTF-8"));
    

    【讨论】:

      【解决方案3】:

      使用类似以下的内容。注意,/ 用作包名前的前缀。假定 YourClass 在 packA 中。

      InputStream stream = YourClass.class.getResourceAsStream("/packB/resources/file.txt");
      

      【讨论】:

        【解决方案4】:

        您应该从文件路径中删除结尾的/ 并使用classA.class.getClassLoader().getResourceAsStream("packB/resources/file.txt")

        【讨论】:

          猜你喜欢
          • 2011-10-08
          • 1970-01-01
          • 2015-07-16
          • 2016-07-29
          • 2015-01-25
          • 2013-08-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多