【问题标题】:Java relative path in NetBeansNetBeans 中的 Java 相对路径
【发布时间】:2011-08-12 06:44:51
【问题描述】:

我正在开发一个 NetBeans 模块,其中有一个名为 test 的 Java 包和另一个名为 test.templates 的包。我想从测试包中的 Java 文件中读取 test.templates 包中的文本文件。我尝试了几种方法,但它给出了FileNotFoundException 异常:

BufferedReader br = new BufferedReader(new FileReader("templates/test.txt"));
BufferedReader br = new BufferedReader(new FileReader("/test/templates/test.txt"));
BufferedReader br = new BufferedReader(new FileReader("src/test/templates/test.txt"));

但是这些都不起作用..我想使用相对路径,而不是绝对路径。我该怎么办?

【问题讨论】:

    标签: java netbeans io filereader


    【解决方案1】:

    您需要使用getResourcegetResourceAsStream

    java2s.com 上的示例:

    http://www.java2s.com/Code/Java/Development-Class/Loadresourcefilerelativetotheclasslocation.htm

    【讨论】:

      【解决方案2】:

      你应该注意一些关于相对路径(Netbeans)的事情:

      + 文件:默认为项目文件夹,表示在src 文件夹之外。
      如果保存到test.txt,会生成:project/test.txt
      如果你保存到data/test.txt,...project/data/test.txt
      因此,如果要加载文件,则相反。像这样,您应该将文件放在 project/data/filename.txt 中。然后在编码时,您会得到路径:data/filename.txt

      + ImageIcon:如果可以,我稍后会分享。
      + Image(SplashScreen):我稍后会分享。

      【讨论】:

      • 我不确定这个答案:v
      【解决方案3】:

      getResource()返回一个URL,所以要提取文件名,你可以尝试调用getFile()

      您传递给 getResource 的文件路径将基于您的 netbeans 包。使用前导斜杠表示类路径的根。

      例子:

      getResource(/db_files/table.csv).getFile()
      

      【讨论】:

        【解决方案4】:
        try
        {
        BufferedReader br = new BufferedReader(new FileReader(getClass().getResource("/test/templates/test.txt").toString().substring(6)));
        }
        catch(Exception ee)
        {
        JOptionPane.showMessageDialog(this, ee);   
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-23
          相关资源
          最近更新 更多