singlepost

Как в dotNET узнать являится ли объект папкой или файлом (по пути в string)? << На главную или назад  

Пишу прогу на C#, появилась данная проблема
нашел класс System.Uri, взял оттуда свойство isFile – видимо сделал глупость – он почему-то и на папку возвращает TRUE…
что делать?

42 ответов в теме “Как в dotNET узнать являится ли объект папкой или файлом (по пути в string)?”

  1. 42
    Да Да ответил:

    Сергей reliable Рыбьяков надо бы проверить в конце все функции, чтобы установить требуемую версию Framework ;)

  2. 41
    Лис Белый ответил:

    Я хороший программист, и цена мне довольно высокая. А вот тебе цена – действительно НОЛЬ, ну максимум – 10000 р. в месяц.

  3. 40
    Да Да ответил:

    если он вообще грубит людям – цены ему null.
    лучше б совет дал вместо оскорблений.

  4. 39
    Лис Белый ответил:

    Разве я укорял его за ОС?

  5. 38
    Сергей Рыбьяков ответил:

    #38, перед кем ты, собственно, оправдываешь? =)
    если человек сидит под никсами – хвала и почет ему, но если он грубит людям, которые сидят под другими ОС – цены ему 0

  6. 37
    Да Да ответил:

    ну куда ж нам до вас – Великих UNIXсоидов
    и вообще – учусь только
    смотря сколько раз повторилось слово ТУПОЙ сомневаюсь, что ты очень умный

  7. 36
    Лис Белый ответил:

    В самом прямом. Тупица. Как ты можешь называть себя программистом??? Ты – плод совокупления китайцев и индусов.

  8. 35
    Да Да ответил:

    Да, в каком смысле?

  9. 34
    Сергей Рыбьяков ответил:

    #34, это Вы к чему? нет умных мыслей?

  10. 33
    Лис Белый ответил:

    Тупой быдлокодер.

  11. 32
    Сергей Рыбьяков ответил:

    Ну сколько людей – столько и мнений ;)
    Но насчет C# вы заблуждаетесь. Он создавался для того, чтобы программисты Cрр\Java имели БОЛЬШЕ возможностей при разработке ПО (что мешает вам сочитать винапи функции и классы .Net? наоборот, это дает возможность ВЫБИРАТЬ наиболее удобное решение поставленной задачи)

  12. 31
    Да Да ответил:

    Ну я считаю, что api – это не для дотнет
    таки же в этом и смысл, чтобы использовать только средства дотнет
    мне кажеться, стиль программирования С# не выдерживает использования средств C++

  13. 30
    Сергей Рыбьяков ответил:

    #30, вы программирете в среде .Net ?
    Если нет, то вам не понять, что такое Класс.
    Если вы патриот WinApi, то используйте его как хотите, убеждать других что он лучше того, что вы не "пробовали" не стоит.

  14. 29
    Евгений Баталов ответил:

    Если надо апи (классы не подходят), то юзай апи, чего тут такого. Не юзаешь апи-себя ограничиваешь.

  15. 28
    Сергей Рыбьяков ответил:

    #28, это не "само-ограничевание", а поиск удобных и надежных инструментов.

  16. 27
    Евгений Баталов ответил:

    Не стоит себя ограничивать.

  17. 26
    Евгений Баталов ответил:

    Там все достаточно устоявшееся. Как вариент юзай винапи и никаких тебе классов, можно из дотнета (правда с типами параметров входных\выходных могут быть проблемы).

  18. 25
    Да Да ответил:

    Ну с api ясно – но я именно из-за классов заинтересовался C# =)
    вот когда буду с Си работать, тогда естественно с apiвзаимодействовать

    ну вот вроде пространство Ink появилось в 3.0 или 3.5 – я так понял для touch-интерфейса

  19. 24
    Да Да ответил:

    Ну про XBox в MSDN написано..
    Например класс Activator -
    "Platforms

    Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune"

    а про дельфи – мне на него всё равно =) просто мне больше СИ-подобные языки нравятся.
    Проект создаю в контексте 3.5 .NET – может проскочет новенькая функция..

  20. 23
    Евгений Баталов ответил:

    А зачем фреймворк обновлять? Эти функции еще в первом дотнете были.

  21. 22
    Сергей Рыбьяков ответил:

    Все равно от C# я отказывать пока не собираюсь.
    #22, подумайте над тем, что вы сказали: смысл было изобретать велосипед – Delphi Prism, если отличия и впрямь такие не значительные?
    цитата:
    Delphi Prism – это новое решение от компании Embarcadero Technologies для разработки приложений .NET. В этом решении на базе Visual Studio вы сможете использовать существующие навыки программирования на Delphi для создания приложений .NET. При этом можно использовать преимущества таких новейших и лучших технологий .NET, как WinForms, WPF, ASP.NET и LINQ. Конечно, вы также сможете разрабатывать приложения для баз данных с использованием знакомой функциональности dbExpress и клиентов .NET, которые подключаются к собственным серверам DataSnap.

    Так что приравнивать Delphi к какому либо .Net языку не стоит, потому как Delphi остался тем же, но у программистов появилось возможность работать с .Net библиотеками (что очень даже хорошо).

  22. 21
    Денис Бикинеев ответил:

    Зря вы про Дельфин так. ВЕдь сейчас вышел Delphi Prism как раз под дотНет. Всё тоже самое как в СиШарп, только вместо привычных { и }, осталось begin и end. Для истинных Делфийцев :) ))

  23. 20
    Сергей Рыбьяков ответил:

    Ну с XBox ты малось загнул ;)

  24. 19
    Да Да ответил:

    Я изучаю C# с начала лета – как сессию сдал…
    Вот насчёт Делфи – +1 , мне он тоже не нравиться.
    пока в Си# не нащупал главного – стиля программирования. Если его не чувствуешь – даже гибкие средства Си# можно свести на нет.
    Радует то, что приложения могут выполняться на платформах, вплоть до XBox =)

  25. 18
    Сергей Рыбьяков ответил:

    Я так понял проект для узкого круга лиц (вас, ваших друзей). Думаю Framework .NET обновить им проблемы не составит.
    Вы давно изучаете C#? Если нет, то бросать не советую, так как вы еще до конца не поняли его структуры. Со времене это первое впечатление рассеятся и вы поймете, что это гибкий и удобный язык.
    Но все же это мое мнение, каждый выбирает то, к чему душа лежит. К примеру я терпеть не могу делпфи, уж больно он уродский (да простят меня великие делпфинчане).
    Не нужно споров на эту тему – сколько людей столько и мнений.

  26. 17
    Да Да ответил:

    Насчёт Си++ не могу ничего сказать – Страустрап на полке уже месяц пылится – и всё это из-за C#…
    конечно хороший язык, но нужно как-то заставлять пользователей обновлять свой Framework .NET…

  27. 16
    Сергей Рыбьяков ответил:

    Но зачем же так скептически? Я считаю C# намного удобнее как Си в частности, так и С++ в целом. Хотя если подумать СХОДСТВ у них больше чем РАЗЛИЧИЙ, но ОТЛИЧИЙ все же больше =)

  28. 15
    Да Да ответил:

    Случай представился так, что одной подруге захотелось разобрать 30 гб фотографий, среди которых, наверняка, есть копии – она попросила меня найти программу поиска дубликатов.
    В Сети не нашёл ничего стоящего и решил написать сам – да не по названию чтобы искала, а по хешу, ибо надёжней
    =) не удаляйте из Новостей "слежение за заметкой" – я допишу – скину ссыль сюда

  29. 14
    Да Да ответил:

    p.s. чёрт дёрнул на dotNET писать(посоветовали изучить)…
    взял бы родной Си, уже бы управился :)

  30. 13
    Сергей Рыбьяков ответил:

    тогда жду с нетерпением.
    этот проект разрабатываете для себя?

  31. 12
    Да Да ответил:

    думаю, да=)
    кодовое имя : DubliX

  32. 11
    Сергей Рыбьяков ответил:

    Полезная программа. В паблик она попадет? =)

  33. 10
    Да Да ответил:

    Поиск дубликатов файлов по содержанию.
    Считается хэш-код файла.
    Программа содержит ассоциацивный массив в виде "Хэш-Путь в системе".
    если софтина находит хэш код, сходный с имеющимся в таблице – путь к файлу выводиться в listbox для "файлов, к удалению"

  34. 9
    Сергей Рыбьяков ответил:

    Что за чудо программа то такая?

  35. 8
    Да Да ответил:

    я вот думаю – как создание нового объекта за каждый проход отразиться на быстродействии…
    думаю надо на С++ реализовать=)

  36. 7
    Да Да ответил:

    спс, попробую!

  37. 6
    Сергей Рыбьяков ответил:

    А не проще ли смотреть СВОЙСТВА обекта?

    FileInfo FI = new FileInfo(твой обект);//для просмотра атрибутов
    string atribyts = FI.Attributes.ToString();//наши атрибуты
    int f = atribyts.IndexOf("Directory");//если файл, то f == -1, иначе f >=0
    // f будет иметь индекс первого вхождения слова Directory в строке atribyts

  38. 5
    Да Да ответил:

    public void Bust(string Dir)
    {
    string[] arr;

    Dictionary<long, string> hashTable = new Dictionary<long, string>();
    long curHash = 0;
    labCountAll.Text = Convert.ToString(listBox1.Items.Count);
    try
    {
    arr = Directory.GetFileSystemEntries(Dir);
    foreach (string str in arr)
    {
    >>>>>>>>>>>>>>

    if (Path.GetFileName(str) != "")
    >>>>>>>>>>>>>>
    {// Если текущий объект – файл
    curHash = getHash(str);
    if (hashTable.ContainsKey(curHash))
    {// Если текущий файл обладает хэш-кодом, имеющимся в таблице
    listBox1.Items.Add(str);
    labCountAll.Text = Convert.ToString(listBox1.Items.Count);
    listBox2.Items.Add(str);

    }
    else
    {
    hashTable.Add(curHash,str);
    listBox1.Items.Add(str);
    }
    }
    else
    {
    Bust(str);
    }

    }
    }
    catch (Exception exc)
    {
    MessageBox.Show(exc.Message);
    return;
    }

    }

    При попытке выполнить Path.GetFileName("C:\\1test\\Новая папка")
    всё равно выполняется 1 ветка… =(
    есть предположение, что в конце пути надо как-то добавить "\\", но это рекурсивно приводит к вопросу данного поста…

  39. 4
    Глеб Загребалов ответил:

    Ни это ли?
    -> //msdn.microsoft.com/en-us/library/system.io.pa...

    Ежели папка то возврат нуллика, а файл – имени и расширения.

  40. 3
    Да Да ответил:

    черт, я что-то совсем оглупел – а что там за метод это делает?

  41. 2
    Алексей Самулеенков ответил:

    Если речь идёт о файлах в локальной файловой системе, то вот ссылка по теме: //msdn.microsoft.com/en-us/library/system.io.pa...

  42. 1
    Да Да ответил:

    именно так, спасибо!

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.