2010-12-01 37 views
8

Je suis dans une phase de refactoring pour un projet sur lequel je travaille et j'aimerais apporter des améliorations à la façon dont je construis et représente les chemins du système de fichiers. Quelles choses dois-je prendre en compte lors de la représentation des chemins relatifs dans le code Java pour assurer la compatibilité sur Ubuntu, OSX et Windows 7.Création et représentation de chemins de fichiers multiplateformes

Actuellement, pour obtenir une instance de File référençant "MyProject/foo/bar.f", j'aurais Code long des lignes de:

File bar = new File(ProjectDirectory + "/" + FooResourceDirectory + "/" + barName);

Cela semble mal pour plusieurs raisons, ce sont quelques-unes des meilleures pratiques?

Répondre

12

Peut-être utiliser les constructeurs fournis pour faire ce genre de chose:

new File(parent, child) 

Vous devez « nid », mais il est trivial de gérer cela (par exemple, faire une fonction pour obtenir un chemin construit à partir de quelque chose de prise . string...)

Voir la File constructors.

+0

File.pathSeparator fait partie de ce que je cherchais à l'origine, mais je pense que j'aime l'idée d'utiliser les constructeurs intégrés, et d'imbriquer/avoir une fonction d'emballage plus. –

9

tout d'abord, vous devez utiliser File.separator File.pathSeparator au lieu de "/".

+3

Attention: File.pathSeparator = File.separator - File.pathSeparator (par exemple "/") est le caractère pour séparer les éléments d'un chemin, et File.separator (par exemple ";") est le caractère pour séparer les différents chemins – Ralph

+1

Je préfère utiliser le constructeur correct à travers: 'new File (parent, enfant)' –

+1

@Ralph je pense que vous avez mélangé cela. ";" <-> "/" – lrxw