Comment puis-je encoder un chemin de fichier dans un nom de fichier afin que le nom de fichier soit valide et qu'il n'y ait pas de collisions? En d'autres termes:Comment encoder un chemin de fichier dans un nom de fichier? (pas de collision, crossplatform)
- Le nom de fichier résultant ne contient pas de caractères spéciaux tels que '\', ':' ou '/'.
- Deux chemins de fichier différents ne sont jamais codés dans le même nom de fichier.
Exemple: filepath "C: \ Program Files \ Mon programme" -> nom de fichier "NGQqKY4pBaP7lPKQPD6Y ..."
Cet exemple est uniquement pour illustration; il peut y avoir de meilleures (et plus simples) façons de le faire. Arrière-plan du problème: Ce codage de filepath est utilisé pour une simple vérification d'instance unique en Java: deux instances du programme peuvent être exécutées simultanément si elles sont situées dans des répertoires différents, mais pas lorsqu'elles se trouvent exactement dans le même annuaire. Je sais qu'il existe d'autres moyens de garantir la propriété d'instance unique, mais je trouve que l'encodage du chemin de fichier est le meilleur en termes de rapport coût-bénéfice dans ma situation particulière.
Mais alors C: \ foo \ bar.txt et C: \ foo%) bar.txt auront des noms égaux. – Marii
Ensuite, utilisez ma première conversion. Je voudrais aller à la seconde, parce que personne n'a un fichier foo%) bar.txt dans ses dossiers, et le dossier/fichier nommé foo/bar.txt. – Daniel
Oui, vous avez raison. La première conversion sera suffisante. :) – Marii