Во-первых, стоит указать, что "."вполне допустимо в именах файлов, но "/" - нет, поэтому, хотя приведенный вами пример не нуждается в переводе, "www.ibm.com/path1/file1.jpg" будет.
Простойstring.Replace
было бы лучшим решением здесь - при условии, что вы можете найти символ, который является допустимым в имени файла, но недопустимым в URL.
Если предположить, что недопустимым символом URL является «§» (что может быть допустимо вURL), тогда у вас есть:
string.Replace("/", "§");
для перевода в имя файла и:
string.Replace("§", "/");
для перевода обратно.
Этостраница на URL-кодировке определяет допустимые, недействительные и небезопасные (допустимые, но имеющие специальное значение) символы для URL-адресов.Символы в «верхней половине» ISO-Latin набора 80-FF hex (128-255 десятичных.) Не являются допустимыми, но могут быть в порядке в именах файлов.
Это необходимо сделать для каждого символав URL, который находится в наборе недопустимых символов имени файла.Вы можете получить это, используя GetInvalidFileNameChars
.
ОБНОВЛЕНИЕ
Если предположить, что вы не можете найти подходящие пары символов, тогда другое решение будетиспользовать таблицу поиска.Один столбец содержит URL, другой - сгенерированное имя файла.Пока сгенерированное имя уникально (GUID подойдет), вы можете выполнить двусторонний поиск, чтобы перейти от одного к другому.