Рейтинг:
12
Maciej Los
Попробовать это:
string path = @"D:\Audiobooks"; //change initial path to your needs
string filter = "*.zip";
DateTime startdate = new DateTime(2012,1,1); //change dates to your needs
DateTime enddate = new DateTime(2016,12,31);
List<string> files = Directory.EnumerateFiles(path, filter, SearchOption.AllDirectories)
.Where(x=>File.GetLastWriteTime(x)>=startdate && File.GetLastWriteTime(x)<=enddate)
.Select(x=>Path.GetFileName(x))
.ToList();
foreach(string zipfile in files)
{
combobox1.Items.Add(zipfile);
}
Для получения более подробной информации, пожалуйста, смотрите:
Каталог.Метод EnumerateFiles (String, String, SearchOption) (System.IO)[
^]
Файл.Метод GetLastWriteTime (String) (System.IO)[
^]
Метод Path. GetFileName (Строка) (System.IO)[
^]
Garth J Lancaster
сладкий (похожий на "узор", который я использую для таких случаев) +5
Maciej Los
- Спасибо, Гарт.
Овации
Мацей
Member 12558924
Эй,
Большое спасибо!!! Он работает для zip-файла, но можно ли оставить пользователю возможность вводить свой собственный диапазон дат всякий раз, когда он в этом нуждается, используя элемент управления DateTimePicker в моих формах(интерфейс)? Кроме того, я также хочу иметь возможность ввести точное время выбранной даты. То, что я пробовал, не работает.
Есть идеи? Заранее спасибо.
Maciej Los
Да, вы можете это сделать. Все, что вам нужно, чтобы это установить startdate
и enddate
, например:
DateTime startdate = DateTimePicker1.Value;
Пожалуйста, примите ответ как решение (зеленая кнопка).
Member 12558924
Дело сделано! должен ли я сделать это в коде позади элемента управления DateTimePicker или в элементе управления Button, где я пишу весь этот код? Я сделал это в коде позади элемента управления DateTimePicker, но я не уверен. Большое спасибо.
Maciej Los
Вставьте этот код в подпрограмму Button_Click.
Member 12558924
Большое вам спасибо, он работает очень хорошо !!! И как я могу заполнить новую combobox2 с записями каждого zip-файл? Я имею в виду, что я выбираю zip-файл в своем combobox1, его записи, такие как test.txt появится в combobox2 и записи этого test.txt также будет отображаться в datagridview в виде таблицы. Как я могу сделать это в том же коде?
я пробовал это сделать, чтобы заполнить новый combobox2, но это не работает. Я получаю ошибку и должен сломать код, когда он запускается. что касается datagridview, то я понятия не имею.
ZipArchive zip = ZipFile.OpenRead(каталог);
foreach (запись ZipArchiveEntry в zip.Записи)
{
comboBox2.предметы.Добавить (запись.Полное имя);
}
Было бы очень приятно помочь мне в последний раз.
еще раз спасибо всем
Maciej Los
Вы должны указать полное имя файла zip-файла.
Member 12558924
Это работает, но только для первого выбранного имени файла! Поэтому, когда я выбираю другой zip-файл в своем combobox1, мой код не заполняет combobox2 элементами вновь выбранного файла. Это всегда одни и те же данные в combobox2. Как мне изменить свой код, чтобы он работал? Спасибо
Maciej Los
Вы закрыли zip-файл перед дальнейшей обработкой?
Member 12558924
Доброе утро, Мацей, и спасибо тебе за помощь. Я не могу закрыть zip-файл, однако пытался закрыть zipfile или zip. Я получаю ошибку типа: "string или ZipArchive не содержит определения для 'close' и не может быть найден метод расширения 'close', принимающий первый аргумент типа string или ZipArchive." Это весь код в методе, возможно, вы сможете найти, почему он не работает. Еще раз спасибо!!!
мой код:
частная button1_Click_1 недействительным(объект отправителя, EventArgs в электронной)
{
// Создайте экземпляр класса FolderBrowserDialog
Диалоговое окно openfiledialog ОФД = новое диалоговое окно openfiledialog();
// Установить начальное свойство SelectedPath
ОФД.InitialDirectory = @ " \\имя_сервера";
фильтр = "*.молния";
// Показать OpenFileDialog.
DialogResult result = ofd.Метод showdialog();
if (result = = DialogResult.ОК)
{
строки полный путь = ОФД.имя файла;
строку каталога;
directory = fullPath. Substring(0, fullPath.LastIndexOf('\\'));
// Запишите выбранный путь в текстовое поле рядом с кнопкой
textBox1. Text = каталог;
если (файл.Существует(fullPath))
{
List & lt;string & gt; files = каталог.EnumerateFiles(каталог, фильтр, SearchOption.AllDirectories)
. Где (x = & gt; файл.GetLastWriteTime (x) >= startDate && файл.GetLastWriteTime (x) <= endDate)
.Выберите(х => По пути.GetFileName(х))
.Список();
поле combobox1.Предметы.Четкий();
по каждому элементу (строка zip-файл в архиве)
{
это. comboBox1.Предметы.Добавить (zipfile); / / заполнить cbx1 файлами*. zip
// zip-файл.Close (); потому что не работает
}
comboBox2.предметы.Четкий();
ZipArchive zip = ZipFile.OpenRead(fullPath);
foreach (запись ZipArchiveEntry в zip.Записи)
{
comboBox2.предметы.Добавить (запись.FullName); / / заполнить cbx2 файлами*. csv
// застежка-молния.Close (); также не работает
}
}
}
}
Maciej Los
- Привет!
Простой способ открыть zip-файл и перечислить его содержимое-это:
using (System.IO.Compression.ZipArchive archive = System.IO.Compression.ZipFile.OpenRead(fullPath))
{
foreach (System.IO.Compression.ZipArchiveEntry entry in archive.Entries)
{
Console.WriteLine("{0}", entry.FullName);
}
archive.Dispose();
}
Для получения более подробной информации, пожалуйста, смотрите:
Одному Классу
Member 12558924
Привет,
как я могу проверить содержимое zip-файла перед его чтением? я попробовал с файлом.Существует (fullpath), но проверка не выполняется. fullpath содержит каталог и имя файла zip. спасибо за ваше время
Maciej Los
Ты не можешь. Вы должны открыть его, чтобы иметь возможность прочитать его содержание. Так же, как ты делаешь это в реальности. ;)
Member 12558924
Я хотел запрограммировать сообщение, которое сообщит мне, есть ли один или несколько файлов cvs в zip-файле, и даст мне количество файлов, содержащихся в этом zip-файле. Разве это невозможно? я попробовал это:
ВАР = элемент combobox1.Элемент.Метод toString();
полный путь = ФБД.SelectedPath + "\ \ " + var;
comboBox2.предметы.Четкий();
если (файл.Существует(fullpath))
{
ZipArchive zip = ZipFile.OpenRead(fullpath);
Ящик для сообщений.Показать (Каталог.EnumerateFileSystemEntries(fullpath, "*. csv").ToList & lt;string> (). Count + "CSV файл(ы) присутствует"); / / получить ошибку здесь
foreach (запись ZipArchiveEntry в zip.Записи)
{
comboBox2.предметы.Добавить (запись.FullName); / / заполните comboBox2 файлами*. csv из выбранного zip-файла
}
застежка-молния.Располагать();
}
ещё
{
Ящик для сообщений.Показать("файл не CSV-файл(ы) присутствует");
}
Maciej Los
Хорошо, но вы должны задать еще один вопрос.
Member 12558924
ладно, дело сделано. Спасибо