2017-02-16 16 views
2

FileName содержит, например. Легенда/Dery // ВременаC# Сохранить файл с именем «/» в имени

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

Я не могу сохранить файл, так как «/» рассматривается как путь, я также не могу удалить «/», потому что это нужно для дальнейшей обработки. Есть ли способ сохранить такой файл?

+1

Имена файлов не могут содержать символы косой черты. Это ограничение файловой системы. –

+0

вместо использования «/» для дальнейшей обработки, можете ли вы использовать другой символ для дальнейшего процесса? есть дискуссия о [незаконном имени файла для разных ОС] (http://stackoverflow.com/questions/1976007/what-characters-are-forbidden-in-windows-and-linux-directory-names) – Turbot

+0

можете ли вы объясните, что вы пытаетесь сделать? почему вы не можете использовать другой символ? зачем вам бросать строку с некоторым маркером разметки? –

ответ

4

Вам не повезло. Прямая косая черта не может быть частью имени файла.

Вам необходимо избежать это как-то (т. Е. Изменить имя, но предоставить способ его изменения), но на самом деле нет обычного способа сделать это.

Я видел % были использованы для этой цели, с %% используется для обозначения одного %, и что-то вроде %f для прямой слэш, %b для обратной косой черты и т.д.

+0

Это очень плохо:/Спасибо за ваш быстрый ответ. я заменю незаконных символов. :) Я не хотел тратить ненужную вычислительную мощность, но, как я вижу, это единственный способ –

0

Вместо того, чтобы избежать в я предлагаю нормализовать свой вклад как при сохранении файла и при попытке получить доступ к файлу:

//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","-") 

таким образом, вы всегда будете иметь чистые имена файлов и папок и не приходится беспокоиться о незаконных именах.