Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Работа с файлами по маске.

Ответить
Настройки темы
.NET - Работа с файлами по маске.

Пользователь


Сообщения: 72
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот пишу простой код по удалению файла если он *.txt. В бат по такой маске все работает, а в с# нифига не хочет. Вот код:
Код: Выделить весь код
       
 private void button1_Click(object sender, EventArgs e)         
 {             
 DirectoryInfo dir=new DirectoryInfo(@"c:\zzz\");             
 foreach (FileInfo file in dir.GetFiles())            
  {                  
string n = "*.txt";             
 if (file.Name == n)              
{                  
file.Delete();              
}             
 }                   
}

Отправлено: 01:09, 19-07-2012

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
foreach (FileInfo file in dir.GetFiles())            
  {                  
 if (file.Extension == "txt")              
{                  
file.Delete();              
}
Как то так(пишу на память). Не надо никаких стрингов с масками. Ты и так в foreach оббегаешь все файлы в папке, а FileInfo обладает всеми нужными свойствами - имя, путь, РАСШИРЕНИЕ файла и т.д.

И однозначно вызов file.Delete(); надо оборачивать в try... catch, т.к. могут вылететь исключения при попытках удалить файл.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:12, 19-07-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


А можно воспользоваться методом GetFiles с параметром маски. И удалить все файлы...

Код: Выделить весь код
foreach (FileInfo file in dir.GetFiles("*.txt"))            
  {                  
file.Delete();              
}

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:39, 19-07-2012 | #3


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


LilLoco, если расширение будет .TxT или TXT, то не сработает, как и в моем, впрочем, случае.
В моем варианте надо переписать так:

Код: Выделить весь код
if (file.Extension.ToLower() == "txt")

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:03, 19-07-2012 | #4


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Delirium, Позволю себе с вами не согласится. При поиске по маске находятся все файлы. Попробовал, вот что получилось:
Код: Выделить весь код
namespace ConsoleApplication1
{
    class Program
    {
        static void Main ( string[] args )
        {
            DirectoryInfo di = new DirectoryInfo ( "D:\\test" );
            foreach (FileInfo fi in di.GetFiles ( "*.txt" ))
            {
                Console.WriteLine ( fi.FullName );
            }
            Console.ReadKey ( );
        }
    }
}
Список файлов:

Работа программы:

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Последний раз редактировалось LilLoco, 19-07-2012 в 10:00.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:34, 19-07-2012 | #5


Пользователь


Сообщения: 72
Благодарности: 0

Профиль | Отправить PM | Цитировать


А что значит
Цитата Delirium:
Extension.ToLower() »
?
Проверяет именно разширение файла?
Я сделал так как LilLoco писал, потому что мне не только по разшрению нужно было удалять но и по "?18023?.тхт".
Но возьму на заметку оба способа.

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

Отправлено: 00:50, 20-07-2012 | #6


Пользователь


Сообщения: 72
Благодарности: 0

Профиль | Отправить PM | Цитировать


И ещо, не подскажите как правильно написать функцию для скачивания файла с фтп по маске. Использую вот эту библиотеку: http://kbss.ru/blog/lang_c_sharp/107.html.
Как получить имя файла на фтп я знаю, но как в if задать маску?

Отправлено: 01:07, 20-07-2012 | #7


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


LilLoco, +1. Я и не знал, что GetFiles регистронезависима
Цитата Sadhacker:
Проверяет именно разширение файла? »
да. Именно расширение, а ToLower() приводит расширение в нижний регистр.

Цитата Sadhacker:
не подскажите как правильно написать функцию для скачивания файла с фтп по маске. »
Правила форума: одна проблема - одна тема. Если необходимо, создай новую тему, там и обсудим.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 02:14, 20-07-2012 | #8


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать



И еще маленькая поправочка. При сравнении расширения файла с необходимым значением, необходимо добавить точку. Свойство FileInfo.Extension возвращает расширение с точкой.
Код: Выделить весь код
if (file.Extension.ToLower() == ".txt")

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:33, 20-07-2012 | #9


Пользователь


Сообщения: 72
Благодарности: 0

Профиль | Отправить PM | Цитировать


Delirium, ок, создам новую.

Отправлено: 11:40, 20-07-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Работа с файлами по маске.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Инфо - Работа с INF-файлами -devICE- Наборы обновлений для Windows XP/2003/Windows 7 6 17-10-2022 01:11
VBS/WSH/JS - Работа с файлами по ftp dazm Скриптовые языки администрирования Windows 0 04-12-2011 12:09
C/C++ - Работа с файлами D@n1k007 Программирование и базы данных 2 19-06-2010 16:06
Работа с файлами ramo Программирование в *nix 5 23-04-2007 12:33
Работа с *.lng файлами Artya Хочу все знать 2 18-03-2003 14:43




 
Переход