web-dev-qa-db-fra.com

Forward slash ou backslash?

Je cherche à écrire et à lire des fichiers texte dans et depuis (respectivement) un répertoire différent de celui de mon programme. Lorsque je spécifie un répertoire dans lequel écrire ou lire, dois-je utiliser des barres obliques ou des barres obliques inverses pour identifier un chemin de fichier?

13
Patriot524

L'utilisation de barres obliques rend le système indépendant. Je m'en tiendrai à cela pour plus de simplicité.

Pensez à utiliser Java.io.File.separator si vous affichez le chemin d'accès à l'utilisateur. Vous préférez ne pas surprendre les utilisateurs de Windows. Ils sont un peu nerveux.

23
Paul Draper

Je ne l'ai jamais trouvé documenté nulle part, mais les classes JDK vous permettent d'utiliser des barres obliques, que vous soyez sous Windows ou non. (Vous pouvez le voir dans la source JDK, où il convertit explicitement les séparateurs de chemin pour vous.)

Officiellement - et certainement dans votre interface utilisateur - vous devriez utiliser la file.separatorpropriété système , disponible via System.getProperty (la liste des propriétés système standard est documentée dans la documentation pour System.getProperties ):

String sep = System.getProperty("file.separator");

... et aussi via les champs static Ils sont également disponibles en tant que File.separator (et File.separatorChar ).

Vous pouvez également utiliser les différentes fonctionnalités de la Java.io.File classe pour combiner et diviser des chemins, et/ou les diverses fonctionnalités des interfaces et des classes dans Java.nio.file .

15
T.J. Crowder

Vous pouvez utiliser soit. 

Si vous utilisez /, vous n'avez besoin que d'une seule barre oblique.
Si vous utilisez \, vous devez utiliser \\. C'est-à-dire que vous devez y échapper. 

Vous pouvez également utiliser la méthode resolve() de la classe Java.nio.Path pour ajouter des répertoires/fichiers au chemin existant. Cela évite d'avoir à utiliser des barres obliques. Vous pouvez ensuite obtenir le chemin absolu en appelant la méthode toAbsolutePath() suivie de toString()

SSCCE:  

import Java.nio.file.Path;
import Java.nio.file.Paths;

public class PathSeperator {
    public static void main(String[] args) {
        // the path seperator for this system
        String pathSep = System.getProperty("path.separator");

        // my home directory
        Path homeDir = Paths.get(System.getProperty("user.home"));

        // lets print them
        System.out.println("Path Sep: " + pathSep);
        System.out.println(homeDir.toAbsolutePath());

        // as it turns out, on my linux it is a colon
        // and Java is using forward slash internally
        // lets add some more directories to the user.home

        homeDir = homeDir.resolve("Eclipse").resolve("configuration");
        System.out.println("Appending more directories using resolve()");
        System.out.println(homeDir);

    }
}  
3
Little Child

Tu devrais utiliser / 

Par exemple C:/User/...

0
Ryan