Существует ли более правильный тип для передачи пути к файлу и имени файла методу - PullRequest
5 голосов
/ 27 мая 2010

Что я имею в виду под этим вопросом, когда вам нужно хранить или передавать URL, использование строки, вероятно, является плохой практикой, и лучшим подходом будет использование типа URI. Однако так легко сделать сложные вещи более сложными и раздутыми.

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

Этот код кажется неуклюжим и подверженным ошибкам? Я также должен был бы сделать полный контроль, если это правильное имя файла, если строка содержит данные и список можно продолжить.

private void SaveFile (строка fileNameAndPath) { // Нормальный материал для сохранения файла }

Ответы [ 5 ]

5 голосов
/ 27 мая 2010

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

Чтобы проверить имя файла, вы можете попробовать использовать регулярное выражение или проверить наличие недопустимых символов в System.IO.Path.GetInvalidFileNameChars. Однако, вероятно, легче обрабатывать исключительные случаи недопустимых имен файлов, обрабатывая исключение, которое произойдет, когда вы попытаетесь создать файл - плюс вам все равно нужно это сделать ....

4 голосов
/ 27 мая 2010

К сожалению, строка - это идиоматический способ сделать это в .NET - если вы посмотрите на такие вещи, как FileStream конструкторы и т. Д., Они используют строки.

Вы могли бы рассмотреть возможность использования FileInfo (или DirectoryInfo), но это было бы несколько необычно.

1 голос
/ 27 мая 2010

Вы можете использовать FileInfo (из System.IO) для его передачи, но строки более или менее стандартны при обращении к файлам.

Вы всегда можете использовать Path.GetFileName ({yourstring}), чтобы получить имя файла из пути.

0 голосов
/ 27 мая 2010

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

Если вы работаете с URL, вы можете использовать класс System.Uri , например

Uri myUri = new Uri(myUrl, UriKind.Absolute);

Это позволит вам работать с такими свойствами, как uri.Host, uri.Absolute path и т. Д. Кроме того, вы также получите массив строк (сегментов) для отдельных подпапок в URL.

Информация MSDN здесь: System.Uri

0 голосов
/ 27 мая 2010

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

...