【问题标题】:Java - Getting file from same packageJava - 从同一个包中获取文件
【发布时间】:2012-09-07 20:20:17
【问题描述】:

如果我想从与班级同一个包中的“Words.txt”中读取,我该怎么做?简单地执行Scanner = new Scanner(new File("Words.txt")); 会返回错误。

【问题讨论】:

  • 尝试将 .txt 文件放在项目的根目录中。虽然文本文件可以与特定包中的文件位于同一文件夹中,但这并不能真正使它们成为包的一部分。相反,您需要从文件系统(或者,从 jar 或 war)加载它。

标签: java file package


【解决方案1】:

假设文本文件与.class在同一目录下,而不是.java文件你可以这样做

Scanner scanner = new Scanner(getClass().getResourceAsStream("Words.txt"));

您将在当前工作目录中查找文件。在构建程序时,这通常是程序的根目录。当您将它作为独立程序运行时,它通常是启动程序的目录。

【讨论】:

  • 我不知道是每个答案都只是基于另一个答案还是方法名称刚刚更改,但它是getClass().getResourceAsStream("Words.txt")
  • @Winter 基于我的片状记忆,我想。谢谢。
【解决方案2】:
InputStream is = MyClass.class.getResourceAsStream("Words.txt");
...

【讨论】:

    【解决方案3】:
    Scanner = new Scanner(new File("/path/to/Words.txt")); 
    

    File() 构造函数中的参数,是相对于你的 VM 运行的系统的路径,它不依赖于类的包。

    如果您的 words.txt 是与您的战争一起打包的资源,您可以在此处查看:Load resource from anywhere in classpath

    【讨论】:

      【解决方案4】:
      Scanner scanner = new Scanner(getClass().getResourceAsInputStream("Words.txt"));
      
      String s = new String();
      
      while(scanner.hasNextLine()){
      
      
              s = s + scanner.nextLine();
      
      
       }
      

      【讨论】:

      • 你的意思是getClass().getResourceAsStream("Words.txt")
      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 2013-05-09
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      相关资源
      最近更新 更多