Является ли путь к файлу URL? - PullRequest
2 голосов
/ 30 апреля 2009

У меня есть переменная в коде, которая может иметь путь к файлу или URL в качестве значения. Примеры:

http://someDomain/someFile.dat
file://c:\files\someFile.dat
c:\files\someFile.dat

Таким образом, существует два способа представления файла, и я не могу игнорировать ни один из них. Какое правильное имя для такой переменной: путь, URL, местоположение?

Я использую сторонний API, поэтому не могу изменить семантику или разделить ее на несколько переменных.

Ответы [ 6 ]

7 голосов
/ 30 апреля 2009

Первые два - это URL, третий - путь к файлу. Конечно, протокол file: /// также ссылается только на файл.

При использовании класса Uri вы можете использовать свойства IsFile и LocalPath для обработки файла: /// Uris, и в этом случае вы следует также назвать это так.

2 голосов
/ 30 апреля 2009

на самом деле формальный URL будет файлом: /// c | /files/someFile.dat

urls всегда начинается с protocol: //, а затем path + names, с '/' в качестве разделителя. злые окна IE иногда используют '\' для замены '/', но формальное использование это '/'.

2 голосов
/ 30 апреля 2009

Лично я бы назвал данную переменную "fileName"

1 голос
/ 30 апреля 2009

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

0 голосов
/ 30 апреля 2009

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

if (variable.StartsWith("http://") || variable.StartsWith("file://")) {
  // Handle url
}
else {
  // Handle file path
}

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

Используйте описательное имя для вашего класса, например FileLocation или любое другое, соответствующее вашей номенклатуре. Тогда будет очень естественно объявить переменные FileLocation с именами fileLocation или inputFileLocation или даже fl, если вы неаккуратны.

0 голосов
/ 30 апреля 2009

если используемый вами путь включает протокол "file: //", то это фактически URL.

...