wake-up-neo.com

so lesen Sie den relativen Pfad der Textdatei

Ich habe hier und da Quellen gelesen, aber der folgende Code ist nicht funktionsfähig. Grundsätzlich möchte ich eine Textdatei mit dem Namen 'Administrator' aus dem Ordner 'src' lesen. Ich brauche einen relativen Pfad, da dieses Projekt auf eine andere Person übertragen werden kann. Bitte haben Sie Geduld mit mir.

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();
        }           
    }
9
user2945412

Dies ist ein gültiger absoluter Pfad (auf den mir bekannten Systemen):

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

Also, was die andere Antwort sagte, war den Pfad zum aktuellen Verzeichnis mit:

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

Verketten Sie dann Ihren relativen Pfad mit:

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

Jetzt bekomme ich es, einige Antworten hier und da helfen mir, das Ziel zu erreichen. Habe eine kurze Änderung an meinem Code vorgenommen und es hat funktioniert. Ich hoffe, es hilft auch einigen armen Seelen da draußen.

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();
}                   
10
user2945412

Das ist nicht richtig:

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

Sie wollen:

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

In fast allen Fällen sollten Sie den portablen Schrägstrich "/"." verwenden. In jedem Fall sollten Sie entweder den Dateikonstruktor verwenden, der eine Datei (übergeordnet) und einen String (Dateiname) akzeptiert, oder System.getProperty("file.separator"). verwenden.

0
Kas