如何读取文本文件的相对路径

Posted

技术标签:

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

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

public void staffExists () throws IOException
                   
        //http://***.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();
                   
    

【问题讨论】:

How to read text file from relative path in a project? 的可能重复项 @Dooby Inc:查看了建议的网址。但我无法让它继续工作,请指导我。 @Little Child:我得到了这个持久性错误io.filenotfoundexception 方法签名下的第一行应该放在 try 块中,没有其他内容会引发异常。 在路径规范中使用双斜杠。 "//DBTextFiles//Administrator.txt" 【参考方案1】:

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

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

//http://***.com/questions/2788080/reading-a-text-file-in-java    
//http://***.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");

【讨论】:

以上是关于如何读取文本文件的相对路径的主要内容,如果未能解决你的问题,请参考以下文章

Java读取文本文件

如何打开相对于执行 Lua 文件的 txt 文件?

java 怎样给相对路径下的pdf文件加水印

java输入输出&&文件

python3对文本文件进行操作

如何在 Java 中真正从类路径中读取文本文件