Путь к FileInfo с '|' дает недопустимые символы в пути исключения? - PullRequest
0 голосов
/ 16 ноября 2018

Когда я пытаюсь создать объект FileInfo, используя строку, содержащую '|'персонаж, я получаю незаконные символы в пути исключения.Строка только что проанализирована из некоторого источника данных, который я не могу контролировать, поэтому я не могу добавить никаких escape-символов в исходную строку.Поэтому я попытался .Replace ("|", "\ |") в строке, но все равно получаю то же исключение.Как правильно избежать этого, чтобы я не получил исключение?

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

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

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

public static string RemoveIllegalChars(string path)
{
    if (string.IsNullOrWhiteSpace(path)) return path;

    // Remove invalid directory characters
    Path.GetInvalidPathChars().ToList()
        .ForEach(c => path = path.Replace(c.ToString(), ""));

    // Remove invalid file name characters from file name portion and return the result
    return Path.Combine(Path.GetDirectoryName(path),
        Path.GetInvalidFileNameChars()
            .Aggregate(Path.GetFileName(path), (fileName, invalidChar) =>
                fileName.Replace(invalidChar.ToString(), "")));
}
0 голосов
/ 16 ноября 2018

Не похоже, что ваш источник данных предоставляет допустимые пути / имена файлов для используемой операционной системы.

Вы можете использовать Path.GetInvalidFileNameChars() и Path.GetInvalidPathChars(), чтобы получить массивы символов, которые не разрешены в имени файла или пути. Они должны быть удалены, чтобы не быть законными для файловой системы. Удаление их, скорее всего, обходной путь, а не исправление. Лучше всего решить проблему с источником ваших данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...