Vb net удалить все файлы из папки
Для управления каталогами мы можем использовать сразу два класса Directory и DirectoryInfo , которые расположены в пространстве имен System.IO.
Класс Directory
Класс Directory содержит ряд статических методов, которые позволяют управлять каталогами. Основные из них:
CreateDirectory(path) : создает каталог по указанному пути path
Delete(path) : удаляет каталог по указанному пути path
Exists(path) : определяет, существует ли каталог по указанному пути path. Если существует, возвращается true , если не существует, то false
GetDirectories(path) : получает список каталогов в каталоге path
GetFiles(path) : получает список файлов в каталоге path
Move(sourceDirName, destDirName) : перемещает каталог по адресу sourceDirName на новый адрес destDirName
GetParent(path) : получение родительского каталога по отношению к пути path
Класс DirectoryInfo
Данный класс во многом похож на DirectoryInfo и предоставляет похожую функциональность. Некоторые из его свойств и методов:
Метод Create() создает каталог
Метод CreateSubdirectory(path) создает подкаталог по указанному пути path
Метод Delete() удаляет каталог
Свойство Exists определяет, существует ли каталог
Метод GetDirectories() : получает список каталогов
Метод GetFiles() получает список файлов
Метод MoveTo(destDirName) перемещает каталог
Свойство Parent возвращает родительский каталог
Свойство Root возврашает корневой каталог
Теперь используем эти классы в программе.
Получение списка файлов и подкаталогов
Создание каталога
Прежде чем создать новый каталог, мы проверяем, имеется ли уже такой каталог. Если он существует, то создать его будет нельзя, и приложение выбросит ошибку. После создания каталога у нас получится следующий путь: "C:\SomeDir\program\avalon"
Получение информации о каталоге
Удаление каталога
Если мы просто применим метод Delete к непустой папке, в которой есть какие-нибудь файлы или подкаталоги, то приложение нам выбросит ошибку. Поэтому нам надо передать в метод Delete дополнительный параметр булевого типа, который укажет, что папку надо удалять со всем содержимым:
Перемещение каталога
При перемещении надо учитывать, что перемещение может происходить только в пределах одного логического раздела - то есть из диска C мы можем переместить только в любое место на этом же диске C, но никак не на диск D и т.д. Кроме того, новый каталог, в который мы хотим перемесить все содержимое старого каталога, не должен существовать.
на форме 2 текстовых поля, в которые пользователь вводит период дат,
текстовое поле с выбором папки, из которой надо будет удалить все файлы и папки за указанный период
и кнопка "Удалить"
при нажатии на кнопку необходимо удалить из указанной папки все файлы и папки за указанный период, введенный в текстовые поля пользователем.
Возможно ли такое осуществить? буду рад любой помощи! заранее благодарен!
Удаление всех папок и файлов из указанной папки
мне нужно создать скрипт расширением .vbs для удаления всех файлов и папок в указанной папке.
Поиск в папке и подпапках файлов, созданных или измененных за определенную дату
Есть папка(D:\wscom). В ней лежат файлы, папки, подпапки. на форме текстовое поле(для ввода даты.
Удаление файлов и папок созданных в 2012 году
на форме поле текстовое поле( вводим необходимый год, за который будем удалять файлы и папки) и.
Excel / Очистка конкретный папок от старых папок и файлов с исключением
Доброго времени суток! Excel: Есть ListBox (в коде ListDel), в котором мы создаем список папок.
Да. Примерный алгоритм: получить дату создания файла/директории; проверить, входит ли дата в заданный диапазон; если условие верно => удалить файл/директорию.
По каждому пункту можно обращаться к F.A.Q.
Решение
Юпатов Дмитрий, а можно осуществить скажем через ProgressBar ход удаления? и как-нить высчитать во временном и процентном соотношении?
Юпатов Дмитрий, а можно осуществить скажем через ProgressBar ход удаления? и как-нить высчитать во временном и процентном соотношении?
тогда надо сначала получить список файлов, которые будем удалять, чтобы знать их общее количество. Это будем max для прогрессбара. Ну а потом уже циклично удалять, не забывая на каждом шаге увеличивать value прогрессбара от нуля до максимума.
В процентном соотношении легко - знаем общее количество (max) и количество уже удаленных (value), считаем: % = value/max * 100
Во временном не знаю, но можно так:
Засекаем время, затраченное на удаление одного файла (как разницу времени в начале шага цикла i и (i-1)) и потом, зная остаточное количество файлов, прогнозируем общее время до конца операции. Корректировку делаем на каждом шаге, с учетом уже времени, затраченного на каждый из уже удаленных файлов). Т.е. на каждом шаге считаем среднее значение с учетом обработанных.
т.е. достаточно затратно, чтобы задать вопрос: а нужно ли или достаточно видеть прогрессбар с ходом выполнения (заполняемый по предыдущему описанию)?
В этом пошаговом руководстве приводятся основные сведения о файловом вводе-выводе в Visual Basic. В нем описывается создание небольшого приложения, перечисляющего текстовые файлы в каталоге и анализирующего их. Для каждого выбранного текстового файла приложение предоставляет атрибуты файла и первую строку содержимого. Кроме того, предоставляется возможность записать информацию в файл журнала.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Создание проекта
В меню Файл выберите пункт Создать проект.
Откроется диалоговое окно Создание проекта .
В области Установленные шаблоны разверните узел Visual Basic и выберите элемент Windows. В середине области Шаблоны щелкните Приложение Windows Forms.
В поле имя введите , чтобы задать имя проекта, и нажмите кнопку ОК.
Visual Studio добавит проект в обозреватель решений, после чего откроется конструктор Windows Forms.
Добавьте в форму элементы управления из приведенной ниже таблицы и установите для их свойств соответствующие значения.
Выбор папки и перечисление файлов в ней
Создайте обработчик событий нажатия Click для кнопки browseButton , дважды щелкнув этот элемент управления в форме. Откроется редактор кода.
Добавьте следующий код в обработчик событий Click .
FolderBrowserDialog1.ShowDialog Вызов открывает диалоговое окно FolderBrowserDialog1.ShowDialog . После нажатия пользователем кнопки ОК свойство отправляется в качестве аргумента ListFiles в метод, который добавляется на следующем шаге.
Добавьте приведенный ниже метод ListFiles .
Этот код сперва очищает элемент ListBox.
Затем метод GetFiles возвращает коллекцию строк — по одной для каждого файла в каталоге. Метод GetFiles принимает аргумент шаблона поиска, чтобы извлечь файлы, соответствующие определенному шаблону. В этом примере возвращаются только файлы с расширением TXT.
Строки, возвращаемые GetFiles методом, затем добавляются в GetFiles .
Элемент ListBox содержит список TXT-файлов в выбранной папке.
Остановите работу приложения.
Получение атрибутов файла и содержимого текстового файла
Создайте обработчик событий нажатия Click для кнопки examineButton , дважды щелкнув этот элемент управления в форме.
Добавьте следующий код в обработчик событий Click .
Этот код проверяет, выбран ли элемент в элементе ListBox . Затем он получает запись пути к файлу из элемента ListBox . Метод FileExists позволяет проверить, существует ли файл.
Путь к файлу передается как аргумент методу GetTextForOutput , который добавляется в следующем шаге. Этот метод возвращает строку, содержащую информацию о файле. Информация о файле отображается в элементе MessageBox.
Добавьте приведенный ниже метод GetTextForOutput .
Метод GetFileInfo используется в коде для получения параметров файла. Параметры файла добавляются в StringBuilder.
Метод OpenTextFileReader считывает содержимое файла в StreamReader. Первая строка содержимого файла извлекается из StreamReader и добавляется в StringBuilder .
Выберите файл в ListBox , а затем нажмите кнопку ListBox . В окне MessageBox будет выведена информация о файле.
Остановите работу приложения.
Добавление записи в журнал
В конец обработчика событий examineButton_Click добавьте приведенный ниже код.
Код задает путь к файлу журнала, чтобы файл журнала помещался в тот же каталог, где находится выбранный файл. Запись журнала должна содержать текущие дату и время, а далее информацию о файле.
Метод WriteAllText, которому передается аргумент append со значением True , используется для создания записи в журнале.
Запустите приложение. Перейдите к текстовому файлу, выберите его в ListBox , установите флажок ListBox и нажмите кнопку проверить. Проверьте, добавлена ли запись в файл log.txt .
Остановите работу приложения.
Использование текущего каталога
Создайте обработчик событий для события Form1_Load , дважды щелкнув форму.
Добавьте в обработчик событий приведенный ниже код.
Этот код задает текущий каталог в качестве каталога по умолчанию для обозревателя папок.
Запустите приложение. При первом нажатии кнопки Обзор открывается диалоговое окно Выбор папки с текущим каталогом.
Остановите работу приложения.
Выборочное включение элементов управления
Добавьте приведенный ниже метод SetEnabled .
Метод SetEnabled включает и отключает элементы управления в зависимости от того, выбран ли элемент в элементе ListBox .
Создайте обработчик событий SelectedIndexChanged для элемента filesListBox , дважды щелкнув элемент управления ListBox в форме.
Добавьте вызов метода SetEnabled в новый обработчик событий filesListBox_SelectedIndexChanged .
Добавьте вызов метода SetEnabled в конце обработчика событий browseButton_Click .
Добавьте вызов метода SetEnabled в конце обработчика событий Form1_Load .
Запустите приложение. Флажок сохранить результаты и кнопка проверить отключены, если элемент не выбран в .
Ниже приведен полный пример.
Полный пример с использованием System.IO
В этом пошаговом руководстве демонстрируются открытие и чтение файла с помощью класса StreamReader, проверка доступа к файлу, поиск строки в файле, считанном с помощью экземпляра класса StreamReader, и запись в файл с помощью класса StreamWriter.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Создание приложения
Запустите Visual Studio и начните проект с создания формы, которую пользователь сможет использовать для записи в намеченный файл.
Создание проекта
В меню Файл выберите пункт Создать проект.
В области Новый проект щелкните Приложения Windows.
В поле имя введите и нажмите кнопку ОК.
Visual Studio добавит проект в обозреватель решений, после чего откроется конструктор Windows Forms.
Добавьте в форму элементы управления из следующей таблицы и установите для их свойств соответствующие значения.
Text
Введите произвольный текст.
Запись в файл
Чтобы добавить возможность записи в файл с помощью приложения, воспользуйтесь классом StreamWriter. Класс StreamWriter предназначен для вывода символов в определенной кодировке, тогда как класс Stream предназначен для ввода и вывода двоичных данных. Класс StreamWriter следует использовать для записи строк данных в стандартный текстовый файл. Дополнительные сведения о классе StreamWriter см. в статье StreamWriter.
Добавление возможности записи
В меню Вид выберите пункт Код, чтобы открыть редактор кода.
Поскольку приложение ссылается на пространство имен System.IO, следует добавить следующие операторы в самом начале кода перед объявлением класса для формы, которое начинается с Public Class Form1 .
Перед записью в файл необходимо создать экземпляр класса StreamWriter.
В меню Вид выберите пункт Конструктор для возврата в окно Конструктор Windows Forms. Дважды щелкните кнопку Submit , чтобы создать для нее обработчик событий Click, а затем добавьте в него следующий код.
Интегрированная среда разработки (IDE) Visual Studio откроет редактор кода, а курсор будет помещен внутрь обработчика события, в который и следует добавить код.
Для записи в файл используйте метод Write класса StreamWriter. Добавьте следующий код сразу после Dim fw As StreamWriter . Не стоит беспокоиться о том, что возникнет исключение, если файл не существует, так как в этом случае он будет создан автоматически.
Поскольку речь идет о дневнике, пользователь захочет добавить к каждой записи дату. Вставьте следующий код после fw = New StreamWriter("C:\MyDiary.txt", True) , чтобы присвоить переменной Today значение текущей даты.
Наконец, добавьте код для очистки TextBox. Добавьте следующий код в обработчик события Clear для кнопки Click.
Добавление средств отображения в дневник
В этом разделе вы добавите средство для отображения последней записи в элементе управления DisplayEntry TextBox. Вы также можете добавить элемент ComboBox, который отображает разные записи и позволяет пользователю выбрать запись для отображения в DisplayEntry TextBox. Экземпляр класса StreamReader считывает информацию из MyDiary.txt . Как и класс StreamWriter, StreamReader предназначен для использования с текстовыми файлами.
Для реализации следующей части пошагового руководства необходимо добавить в форму элементы управления из следующей таблицы и присвоить соответствующие значения их свойствам.
Visible
Size
Text
Выбор записи
Заполнение элемента управления ComboBox
В элементе управления PickEntries ComboBox отображается дата создания каждой из записей, чтобы пользователь мог выбрать запись за определенную дату. Создайте обработчик события Click для кнопки GetEntries и добавьте в него следующий код.
Чтобы протестировать код, нажмите клавишу F5 для компиляции, а затем нажмите кнопку Показать записи. Щелкните стрелку раскрывающегося списка в ComboBox, чтобы отобразить даты записей.
Выбор и просмотр отдельных записей
Создайте обработчик события Click для кнопки Display и добавьте в него следующий код.
Чтобы протестировать код, нажмите клавишу F5 для компиляции, а затем введите запись. Щелкните получить записи, выберите запись в и нажмите кнопку Показать. Содержимое выбранной записи появится в элементе DisplayEntry TextBox.
Предоставление пользователям возможности удалять и изменять записи
В заключение можно включить в приложение дополнительные функции, позволяющие пользователям удалять и изменять записи с помощью кнопок DeleteEntry и EditEntry . Обе кнопки неактивны, пока не выбрана ни одна запись.
Добавьте в форму элементы управления из следующей таблицы и установите для их свойств соответствующие значения.
Text
Удаление записи
Text
Изменить запись
Text
Отправка изменений
Включение возможности удаления и изменения записей
Добавьте следующий код в обработчик события Display для кнопки Click после элемента DisplayEntry.Text = ReadString .
Создайте обработчик события Click для кнопки DeleteEntry и добавьте в него следующий код.
Когда пользователь отображает запись, кнопка EditEntry становится доступной. Добавьте следующий код в обработчик событий Click для кнопки Display после элемента DisplayEntry.Text = ReadString .
Создайте обработчик события Click для кнопки EditEntry и добавьте в него следующий код.
Создайте обработчик события Click для кнопки SubmitEdit и добавьте в него следующий код.
если в вашем каталоге может быть много файлов, EnumerateFiles() более эффективно, чем GetFiles() , потому что, когда вы используете EnumerateFiles() вы можете начать перечислять его до возвращения всей коллекции, в отличие от GetFiles() где вам нужно загрузить всю коллекцию в память, прежде чем начать перечислять ее. Смотрите эту цитату здесь:
поэтому, когда вы работаете со многими файлами и каталогами, EnumerateFiles() может быть больше эффективный.
то же самое относится к EnumerateDirectories() и GetDirectories() . Таким образом, код будет:
для целей этого вопроса действительно нет причин использовать GetFiles() и GetDirectories() .
Да, это правильный способ сделать это. Если вы хотите дать себе " чистую "(или, как я предпочитаю называть ее," пустую " функцию), вы можете создать метод расширения.
Это позволит вам сделать что-то подобное..
следующий код очистит папку рекурсивно:
мы также можем показать любовь к LINQ:
обратите внимание, что мое решение здесь не является эффективным, потому что я использую Get*().ToList().ForEach(. ) который генерирует то же самое IEnumerable два раза. Я использую метод расширения, чтобы избежать этой проблемы:
Это метод расширения:
самый простой способ:
имейте в виду, что это может уничтожить некоторые разрешения на папку.
основываясь на hiteshbiblog, вы, вероятно, должны убедиться, что файл читается и записывается.
Если вы знаете, что нет подпапок, что-то вроде этого может быть самым простым:
каждый метод, который я пробовал, они потерпели неудачу в какой-то момент с системой.Ошибки ввода-вывода. Следующий метод работает наверняка, даже если папка пуста или нет, только для чтения или нет и т. д.
следующий код очистит каталог, но оставит там корневой каталог (рекурсивный).
В Windows 7, Если вы только что создали его вручную с помощью Проводника Windows, структура каталогов похожа на эту:
и запуск кода, предложенного в исходном вопросе, для очистки каталога C:\AAA, линия di.Delete(true) всегда терпит неудачу с IOException "каталог не пуст" при попытке удалить BBB. Вероятно, это связано с какими-то задержками/кэшированием в Проводнике Windows.
Читайте также: