2009-06-11 4 views

Répondre

14

Je n'inclue pas la barre oblique de fin lorsque je définis par exemple un répertoire pour stocker des fichiers. C'est parce que je vais l'utiliser comme

$store_file = "$store_path/$file_id"; 

Je vais toujours ajouter une barre oblique avant d'utiliser une variable qui est censé tenir un chemin de répertoire. Je pense qu'il est préférable de toujours en ajouter un que de se demander si le slash final est inclus.

+19

Ne pas avoir de barre oblique ne signifie pas que le chemin de $ chemin_dossier est un fichier ou un répertoire. "/ tmp/store_data" est-ce un fichier ou un répertoire? – Darwin

+2

Lorsque vous utilisez quelque chose comme la fonction PHP [realpath()] (http://php.net/manual/en/function.realpath.php), il n'imprimera pas la barre oblique finale. Votre système et vos outils peuvent dicter votre convention. – jmbertucci

+6

Avoir de multiples barres obliques partout sera généralement interprété comme une simple barre oblique. Donc, vous pourriez même avoir quelque chose comme '' /// '+ $ root +' // '+ $ fichier +'/''et cela n'aurait pas d'importance. Bien que le slash soit un bon moyen de voir si le chemin est un fichier ou un répertoire, il vaut mieux ajouter des chemins comme ''/' + $ root' plutôt que '$ root +'/'' Vous ne pouvez pas être certain que le chemin d'accès à l'ajout a une barre oblique, mais vous pouvez être relativement certain que les barres multiples seront interprétées comme une seule barre oblique dans la plupart des environnements. – Xtrinity

3

Chaque fois que je stocke des chemins de répertoire, ou que je les renvoie depuis des API, j'essaie de respecter la convention de garder une barre oblique. Cela évite toute l'ambiguïté "est-ce un fichier ou un répertoire".

Addendum:
Ce ne vise pas à se substituer à l'aide de méthodes qui peuvent tolérer soit un slash ou son absence. Même en utilisant cette convention, je toujours utilise Path.Combine(...) et des méthodes similaires.

+0

python: 'os.path.join (dir, sous-répertoire_ou_fichier)' – IceArdor

3

J'ai tendance à simplement ajouter le slash comme je suis plus que probable d'utiliser ce répertoire pour ajouter/récupérer des fichiers ...

En termes de référencement web, il peut effectivement augmenter les performances en laissant le slash dans

http://www.netmechanic.com/news/vol4/load_no11.htm

0

Je ne l'ai jamais vu une convention ferme de toute façon. Cependant, vous êtes sûr que, quoi que vous décidiez, quelqu'un d'autre sera sûr à 100% que ce devrait être l'inverse. Donc, la meilleure idée est de tolérer que les choses soient définies de toute façon. Dans le monde .NET, Path.Combine() vous donne un moyen de gérer cela - il y a des équivalents dans d'autres environnements, à partir de fichiers cmd.

8

Oui il se doit, comme:

+ Pathname filename = emplacement du fichier complet. Ainsi, la barre oblique entre le dernier répertoire et le nom de fichier doit se trouver à la fin du chemin d'accès ou au début du nom de fichier. Préfixer les noms de fichiers avec un/signifie que vous devez en tenir compte si vous voulez juste ouvrir un fichier (c'est-à-dire si vous supposez qu'un nom de fichier non qualifié est dans le répertoire de travail courant).

+4

.. et ne pas le prendre en compte signifie que vous êtes peut-être par inadvertance déconner avec /, et de cette façon la folie se trouve – JustJeff

2

Oui, il y a beaucoup de systèmes de fichiers qui supportent les fichiers sans extension, donc ajoutez toujours la barre oblique de fin pour éviter tout problème.

71

je vais avec le slash parce que: «Si elle se termine par une barre oblique, il est un répertoire Sinon, il est un fichier. »

  1. est une convention facile à retenir.

  2. Au moins sur les systèmes d'exploitation que j'utilise couramment, le fait de doubler la barre oblique ne cause aucun problème, tandis que l'omission de la barre oblique entraîne de gros problèmes. Il est donc plus sûr de placer la barre oblique dans la variable et d'utiliser "$ path/$ file" pour l'utiliser.

+6

Un chemin de répertoire est seulement distinguable d'un chemin de fichier si le chemin du répertoire a une barre oblique de fin. – Darwin

+3

Les barres obliques multiples sont équivalentes à une barre oblique, sauf si le chemin commence par une double barre oblique. Voir http://unix.stackexchange.com/questions/1910/how-linux-handles-multiple-path-separators-home-username-file – jdh8

+3

De plus ajouter une barre oblique à la fin de vaariable permet d'utiliser "$ path $ file" à la place de "$ path/$ file", ce qui permet un chemin $ vide - signifiant le répertoire de travail actuel. Mais n'utilisez jamais de barre oblique inverse au lieu de barre oblique. – fantastory

4

Peut-être que vous devriez penser à ce que votre décision signifierait pour les fichiers. Si vous n'incluez pas la barre oblique à la fin d'un nom , vous devrez l'ajouter au début du fichier . Maintenant, si pour une raison quelconque, le chemin menant au fichier est manquant lorsque vous concaténez des chaînes, vous finissez avec quelque chose comme /filename qui n'est pas seulement un fichier mais un chemin absolu depuis le répertoire racine (où que ce soit dans ce contexte).

C'est pourquoi je termine mes chemins avec une barre oblique et conserve les fichiers sous forme de fichiers.

2

Je sais que c'est un vieux fil mais j'ai pensé que je partagerais ce que je fais. Si possible, je normalement permettre à la fois et de faire quelque chose comme ça (si elle était PHP):

$fullPath = rtrim($directory, '/') . '/filename.txt'); 

De cette façon, si le répertoire est défini dans un fichier de configuration, il n'a pas d'importance si la prochaine personne pour le changer comprend la barre oblique ou non.

2

En php, puisque la fonction dirname (__ FILE __) renvoie le nom du répertoire sans barre oblique à la fin. J'ai tendance à m'en tenir à cette convention. Sinon, l'utilisation d'une barre oblique à la fin d'un nom de répertoire entrera en conflit avec la façon dont dirname (..) fonctionne, et vous serez bloqué par la gestion des deux cas puisque vous ne savez pas si le nom du répertoire vient d'un dirname (..) fonction ou un contant défini avec un slash final.

Ligne de fond: N'utilisez pas de barre oblique finale car dirname (..) ne l'est pas.

// PHP Example 
dirname(__FILE__); // returns c:\my\directory without a trailing slash, so stick to it! 

Pour les autres langues, vérifier la fonction qui extrait un nom de chemin, et voir si elle utilise une barre oblique ou non, puis coller à la convention de la langue.

+1

Une exception: dirname ('/ test') = '/' - plutôt que de retourner une chaîne vide, dirname renvoie une barre oblique dans ce cas! Voir les notes [ici] (http://php.net/manual/fr/function.dirname.php). –

Questions connexes