【问题标题】:how to read text file relative path如何读取文本文件的相对路径
【发布时间】:2013-11-21 08:22:24
【问题描述】:

我在这里和那里阅读了源代码,但没有使以下代码正常工作。基本上,我希望从文件夹“src”中读取一个名为“Administrator”的文本文件。我需要一个相对路径,因为这个项目可能会转移给另一个人。请耐心等待我。

public void staffExists () throws IOException
    {               
        //http://stackoverflow.com/questions/2788080/reading-a-text-file-in-java
        BufferedReader reader = new BufferedReader(new FileReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt")));

        try
        {               
            String line = null;
            while ((line = reader.readLine()) != null)
            {
                if (!(line.startsWith("*")))
                {
                    System.out.println(line);
                }
            }

        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }               

        finally
        {
            reader.close();
        }           
    }

【问题讨论】:

  • @Dooby Inc:查看了建议的网址。但我无法让它继续工作,请指导我。
  • @Little Child:我得到了这个持久性错误io.filenotfoundexception
  • 方法签名下的第一行应该放在 try 块中,没有其他内容会引发异常。
  • 在路径规范中使用双斜杠。 "//DBTextFiles//Administrator.txt"

标签: java path relative-path


【解决方案1】:

现在我明白了,这里和那里的一些答案确实有助于我实现目标。对我的代码做了一个简短的编辑,它起作用了。希望它也能帮助一些可怜的灵魂。

String filePath = new File("").getAbsolutePath();
System.out.println (filePath);

//http://stackoverflow.com/questions/2788080/reading-a-text-file-in-java    
//http://stackoverflow.com/questions/19874066/how-to-read-text-file-relative-path
BufferedReader reader = new BufferedReader(new FileReader(filePath + "/src/DBTextFiles/Administrator.txt"));

try
{                           
    String line = null;         
    while ((line = reader.readLine()) != null)
    {
        if (!(line.startsWith("*")))
        {
            System.out.println(line);
        }
    }               
}
catch (IOException ex)
{
    ex.printStackTrace();
}               

finally
{
    reader.close();
}                   

【讨论】:

    【解决方案2】:

    在几乎所有情况下,您都应该使用可移植的正斜杠"/"." 在任何情况下,您都应该使用接受 File(父)和 String(文件名)的 File 构造函数或使用 System.getProperty("file.separator").

    【讨论】:

      【解决方案3】:

      这是不正确的:

      new FileReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt"))
      

      你想要:

      new InputStreamReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt"))
      

      【讨论】:

      • 很高兴解释为什么它不正确。谢谢。
      【解决方案4】:

      这是一个有效的绝对路径(在我知道的系统上):

          /path/to/directory/../../otherfolder/etc/
      

      所以other answer 的意思是获取当前目录的路径:

          String filePath = new File("").getAbsolutePath();
      

      然后将您的相对路径与:

          filePath.concat("path to the property file");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多