【问题标题】:Path to a file inside a package包内文件的路径
【发布时间】:2012-10-17 19:25:22
【问题描述】:

有没有办法读取包内的文本文件。 假设我想访问一个名为“myTextFile.txt”的文件,该文件位于一个名为“a”的包中。

我想从同一个包中的一个名为“MyClass”的类中访问它。 “myTextFile.txt”的路径是什么?我可以像这样使用缓冲阅读器吗:BufferedReader in = new BufferedReader(new FileReader(PATH));

【问题讨论】:

  • “包内的文件”是什么意思?我的第一个猜测是您将文本文件存储在与 .java 源文件相同的目录中。这是一个 Bad Idea(TM),因为您似乎没有很好地组织文件。我强烈建议您将文件存储在他们自己的目录中。
  • 它只是临时的,主要用于调试目的。感谢您的建议。
  • 如果这是为了测试,那么创建一个单独的文件夹/目录来测试资源。这样您以后可以再次使用它们。

标签: java path package text-files bufferedreader


【解决方案1】:

您的项目编译到哪里?任何路径都将相对于程序的位置,或者如果您指定,则为完整路径,而不是类。获得该路径后,您可以将其放在PATH 所在的位置。

但是,您有什么理由将该文件放入一个包中?它不应该放在某种资源目录中吗?

【讨论】:

    【解决方案2】:

    Class 上的 GetResource 效果很好。 Spring 中的 ResourceLocator 也是一个非常灵活的选择。

    【讨论】:

      【解决方案3】:

      您始终可以通过ClassLoader.getResourceAsStream()(或getResource())获取资源。它们也可以通过Class.getResourceAsStream()(而不是ClassLoader)访问。您可以使用相对名称或绝对名称(以 / 开头)。

      【讨论】:

        【解决方案4】:

        听起来您需要使用Class.getResource()ClassLoader.getResource() 方法之一:

        URL url = MyClass.class.getResource("myTextFile.txt"); 
        URL url = MyClass.class.getClassLoader().getResource("myTextFile.txt");
        

        InputStream in = MyClass.class.getResourceAsStream("myTextFile.txt"); 
        InputStream in = MyClass.class.getClassLoader().getResourceAsStream("myTextFile.txt");
        

        请参阅this question 进行比较,以及绝对路径与相对路径的说明。

        那你就可以了

        new BufferedReader(new InputStreamReader(in));
        

        【讨论】:

          【解决方案5】:

          InputStream is = new BufferedInputStream( 获取类()。 获取类加载器()。 getResourceAsStream("/a/myTextFile.txt"));

          应该做的伎俩。请注意 arg 的结构,包的根由“/”表示,您的包(即目录)也是如此

          【讨论】:

          • 它给了我一个“无效的字符常量”错误。知道为什么吗?
          • 您使用的是反斜杠“\”对吗?不是斜线“/”对吗?
          • 我都试过了, / 给了我“无效的转义序列(有效的是 \b \t \n \f \r \" \' \\ )”和 \ 给了我这个错误“构造函数 FileInputStream(InputStream) 未定义"
          • 这是一个从包内的文件中获取 InputStream 的示例。我会编辑帖子。有趣的是“\”应该触发这个错误,而不是“/”。
          【解决方案6】:

          只需输入绝对文件路径即可。即你的煤机路径。应该管用。

          【讨论】:

          • 这根本不灵活。包含指向您的文件系统的链接是一种不好的做法
          猜你喜欢
          • 2015-11-01
          • 2016-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-11
          • 2012-08-04
          • 2011-11-24
          • 1970-01-01
          相关资源
          最近更新 更多