2017-02-16 2 views
2

FileName contient par ex. Légende/Dery // tempsC# Enregistrer le fichier avec "/" dans le nom

File.WriteAllBytes("/Pictures" + FileName, buffer); 

Je ne peux pas enregistrer le fichier parce que le «/» considéré comme chemin, je ne peux pas supprimer aussi le «/», parce que je besoin pour un traitement ultérieur. Y a-t-il un moyen d'enregistrer un tel fichier?

+1

Les noms de fichiers ne peuvent pas contenir de caractères obliques. C'est la limitation du système de fichiers. –

+0

au lieu d'utiliser "/" pour un traitement ultérieur, pouvez-vous utiliser d'autres char pour poursuivre le traitement? il y a une discussion sur le [nom de fichier illégal pour différents OS] (http://stackoverflow.com/questions/1976007/what-characters-are-forbidden-in-windows-and-linux-directory-names) – Turbot

+0

pouvez-vous expliquer ce que vous essayez de faire? pourquoi ne peux-tu pas utiliser un autre symbole? Pourquoi avez-vous besoin de lancer une ficelle avec un marqueur fendu? –

Répondre

4

Vous n'avez pas de chance. Une barre oblique ne peut pas faire partie d'un nom de fichier.

Vous devez échapper en quelque sorte (c'est-à-dire changer le nom mais fournir un moyen de le changer en arrière), mais il n'y a pas vraiment un moyen conventionnel de le faire.

Je l'ai vu % été utilisé à cette fin, avec %% utilisé pour désigner un seul %, et quelque chose comme %f pour une barre oblique, %b pour une barre oblique inverse, etc.

+0

C'est vraiment trop mauvais:/Merci pour votre réponse rapide. je vais remplacer les caractères illégaux. :) Je ne voulais pas gaspiller la puissance de calcul inutile, mais comme je le vois la seule façon –

0

Au lieu d'échapper à je suggère normalisant votre entrée à la fois lorsque vous enregistrez un fichier et lorsque vous essayez d'accéder à un fichier:

//replace all illegal characters with regex (with a dash): 
new Regex(@"[<>:""/\\|?*]").Replace("Inpu|t","-") 

//Or just replace all non alpha numeric characters (with a dash): 
new Regex(@"[^a-zA-Z0-9\-]").Replace("Inpu|t","-") 

cette façon, vous aurez toujours des noms de fichiers propres et dossier et ne pas avoir à s'inquiéter des noms illégaux.