Путь файла - строка. Или нет?
От: grosborn  
Дата: 21.06.13 10:35
Оценка:
Все время натыкаюсь в проектах на стиль кода работы с файловыми путями похожий на этот пример из msdn:

string startFolder = @"c:\program files\Microsoft Visual Studio 9.0\";

// Take a snapshot of the file system.
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);

IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);


То есть с путем файлов работают как со строкой статическими методами, хотя это ближе к понятию объекта.
Есть ли библиотека на этот случай с объектом Path или в функциональном стиле?
Забанен на рсдн за применение слова "Маргинал"
Re: Путь файла - строка. Или нет?
От: 0x7be СССР  
Дата: 21.06.13 10:44
Оценка:
Здравствуйте, grosborn, Вы писали:

G>То есть с путем файлов работают как со строкой статическими методами, хотя это ближе к понятию объекта.

Аргументируй.
Re: Путь файла - строка. Или нет?
От: grosborn  
Дата: 21.06.13 10:58
Оценка: 6 (1)
Прощу прощения, неудачный пример. Другие примеры:

var PathToDataR8 = Path.Combine(Platform.SupportDir, "Content/d2k/DATA.R8");
var PathToPalette = "mods/d2k/bits/d2k.pal";
var PathToSHPs = Path.Combine(Platform.SupportDir, "Content/d2k/SHPs");
var PathToTilesets = Path.Combine(Platform.SupportDir, "Content/d2k/Tilesets");

public static readonly string USER_DATA_DIR = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Kotonoha_Debug");
public static readonly string USER_DATA_DIR = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Kotonoha");


Я привык так:

var PathToDataR8   = Platform.SupportDir / "Content/d2k/DATA.R8";
var PathToPalette  = "mods/d2k/bits/d2k.pal";
var PathToSHPs     = Platform.SupportDir / "Content/d2k/SHPs";
var PathToTilesets = Platform.SupportDir / "Content/d2k/Tilesets";

public static readonly string USER_DATA_DIR = PathInfo.APPLICATION_DATA_LOCAL / "Kotonoha_Debug";
public static readonly string USER_DATA_DIR = PathInfo.APPLICATION_DATA_LOCAL / "Kotonoha";

some_path = other_path.Combine(subdir); // Вместо Path.Combine(
some_path = other_path.Parent; // Вместо Path.GetDirectoryName(что-то там


Ну и другие рюшечки в функциональном стиле. Ищу аналоги. Ищу библиотеки которые имели бы аналогичный подход.
Забанен на рсдн за применение слова "Маргинал"
Re[2]: Путь файла - строка. Или нет?
От: grosborn  
Дата: 21.06.13 11:02
Оценка:
G>>То есть с путем файлов работают как со строкой статическими методами, хотя это ближе к понятию объекта.
0>Аргументируй.

Вот так вот сразу не готов. Не думал об этом, как-то это у меня инстинктивно, объектный подход. А Path Directory File это все статические процедуры. И при объектном подходе код читаемый и компактный.
Забанен на рсдн за применение слова "Маргинал"
Re[2]: Путь файла - строка. Или нет?
От: Sinatr Германия  
Дата: 21.06.13 11:53
Оценка:
Здравствуйте, grosborn, Вы писали:

G>
var PathToDataR8 = Path.Combine(Platform.SupportDir, "Content/d2k/DATA.R8");

var PathToDataR8   = Platform.SupportDir / "Content/d2k/DATA.R8";


В первом случае неважно завершается ли Platform.SupportDir слешем или нет (тоесть, @"C:\Temp" и @"C:\Temp\" будут одинаково скомбинированы в @"C:\Temp\Content\d2k\data.r8", во втором случае нужен учет и стиль (либо пути к папкам всегда имеют слеш в конце, либо всегда добавлять слеш при комбинировании).

С Combine и подобным головной боли меньше.
С методами расширения неплохо придумал
---
ПроГLамеры объединяйтесь..
Re[3]: Путь файла - строка. Или нет?
От: grosborn  
Дата: 21.06.13 13:17
Оценка:
S>С Combine и подобным головной боли меньше.

В приведенном примере / полный аналог Combine()
Но меня сейчас больше интересует есть ли что-то подобное в сети и не будет ли работа по оформлению и выкладке напрасной.
Забанен на рсдн за применение слова "Маргинал"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.