web-dev-qa-db-fra.com

comment lire le chemin relatif du fichier texte

J'ai lu des sources ici et là, mais le code suivant n'a pas fonctionné. En gros, je souhaite lire un fichier texte, nommé "Administrateur" dans le dossier "src". J'aurai besoin d'un chemin relatif, car ce projet peut être transféré à une autre personne. S'il-vous plait, soyez patient avec moi.

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

C'est un chemin absolu valide (sur les systèmes que je connais):

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

Donc, ce que l’autre réponse disait, était d’obtenir le chemin du répertoire actuel avec:

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

Puis concaténez votre chemin relatif avec:

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

Maintenant, je comprends, quelques réponses ici et là m'aident à me rendre au but. A fait une courte modification de mon code et cela a fonctionné. J'espère que ça aidera aussi certaines âmes pauvres là-bas.

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

Ce n'est pas correct:

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

Tu veux:

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

Dans presque tous les cas, vous devez utiliser la barre oblique portable "/".". Dans tous les cas, vous devez utiliser le constructeur de fichier qui accepte un fichier (parent) & String (nom de fichier) ou utiliser System.getProperty("file.separator")..

0
Kas