Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
5 / 5 / 3
Регистрация: 31.07.2013
Сообщений: 98

Получить md5 папок в папке и пропустить несколько папок

01.01.2014, 19:55. Показов 2879. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.Делаю проверку папок и вложенных в них папок по md5.Всего нужно проверить 3 папки(имена известны) в каждой папке по 3 папки которые тоже нужно проверить(имена тоже известны),однако в главной папке(в которых расположены вложенные папки) есть еще другие папки и файлы(их имена не известны),их нужно исключить из вычисления md5.

Примерное устройство папок показано на скрине(извините за качество).
Расшифровка: Символ "!" - значит что из папки нужно извлечь md5(всех файлов скопом)
Категория "Прочие файлы" означает что их нужно пропустить (не считать md5),имена их неизвестны.

Вот метод который вычисляет md5 папки(и файлов скопом):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private static string CreateMd5ForFolder(string path)
        {
            var files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
                                 .OrderBy(p => p).ToList();
 
            var md5 = MD5.Create();
 
            for (var i = 0; i < files.Count; i++)
            {
                var file = files[i];
 
                
                var relativePath = file.Substring(path.Length + 1);
                var pathBytes = Encoding.UTF8.GetBytes(relativePath.ToLower());
                md5.TransformBlock(pathBytes, 0, pathBytes.Length, pathBytes, 0);
 
                
                var contentBytes = File.ReadAllBytes(file);
                if (i == files.Count - 1)
                    md5.TransformFinalBlock(contentBytes, 0, contentBytes.Length);
                else
                    md5.TransformBlock(contentBytes, 0, contentBytes.Length, contentBytes, 0);
            }
Заранее спасибо.
Миниатюры
Получить md5 папок в папке и пропустить несколько папок  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.01.2014, 19:55
Ответы с готовыми решениями:

Получить несколько папок в переменные и самый новый файл в папке
Привет всем. Снова обратился за вашей помощью. :) 1. Вопрос. Есть папка &quot;1&quot;. В ней лежит еще несколько папок, условно &quot;2&quot;,...

В папке нахотится неизвестное количество папок, а в каждой из папок по одному текстовому файлу...
Ребята помогите пожалуйста! У меня такая задача: в папке нахотится неизвестное количество папок, а в каждой из папок по одному текстоваму...

Создать несколько папок в папке
Добрый день. Обращаюсь к тем, у кого есть немного свободного времени. Пожалуйста, помогите написать bat-файл. Суть задачи следующая:...

12
5 / 5 / 3
Регистрация: 31.07.2013
Сообщений: 98
02.01.2014, 11:25  [ТС]
Update

Добавлено через 14 часов 12 минут
UpDATE
0
Эксперт .NET
 Аватар для Wolfdp
3788 / 1765 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
02.01.2014, 15:04
Directory.GetDirectories("общая_папка"); дальше в цикле для каждой под папки віполняешь проверку нужно ли для неё брать md5 и если "true" - юзаешь CreateMd5ForFolder.
0
15 / 15 / 0
Регистрация: 09.02.2012
Сообщений: 30
02.01.2014, 23:50
Для вашего случая как-то так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void Main(string[] args)
{
    string path = @"C:\Users\Sergey\Documents\";
    var md5 = System.Security.Cryptography.MD5.Create();
    
    foreach (var d1 in new System.IO.DirectoryInfo(path).GetDirectories())
    {
        foreach (var d2 in d1.GetDirectories())
        {
            foreach (var f in d2.GetFiles())
            {
                Console.WriteLine("MD5: {0} - FileName: {1}",
                    BitConverter.ToString(md5.ComputeHash(f.OpenRead()))
                        .Replace("-", string.Empty),
                    f.Name);
            }
        }
    }
    Console.ReadKey();
}
0
03.01.2014, 15:33

Не по теме:

Цитата Сообщение от Серега_EX Посмотреть сообщение
Для вашего случая как-то так
0_o

Не совсем понял, где мы пропускаем ненужные папки и почему проходим каждый файл, но ладно...

0
15 / 15 / 0
Регистрация: 09.02.2012
Сообщений: 30
03.01.2014, 15:39
Wolfdp, как я понял из вопроса, человеку нужно пропустить 2 уровня папок и затем в них получить md5 всех вложенных файлов, исходя из этого и привел нужный ему код.
Вопрос, конечно, совсем непонятный, но то что показано на рисунке как раз и выполняет мой код.
0
Эксперт .NET
 Аватар для Wolfdp
3788 / 1765 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
03.01.2014, 15:46
Серега_EX, я как-то это по другому понял... Мол есть 3 папки, в которых по 3 нужные нам папки (то есть всего 9 штук). И имена известны. И для всего этого добра нужно выполнить проверку, игнорируя остальные файлы/директории.
0
5 / 5 / 3
Регистрация: 31.07.2013
Сообщений: 98
04.01.2014, 18:12  [ТС]
Цитата Сообщение от Wolfdp Посмотреть сообщение
Серега_EX, я как-то это по другому понял... Мол есть 3 папки, в которых по 3 нужные нам папки (то есть всего 9 штук). И имена известны. И для всего этого добра нужно выполнить проверку, игнорируя остальные файлы/директории.
Именно так мне и нужно.
Так и не разобрался.

Добавлено через 8 минут
Вот как я получил каталог одной из трех папок:
C#
1
2
3
4
5
6
7
            var globalPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            var clientPath = globalPath + "/" + version;
            var folders = Directory.GetDirectories(clientPath);
            for (var i = 0; i < folders.Length; i++)
            {
                MessageBox.Show(folders[i]);
            }
Как дальше действовать?

Добавлено через 1 час 11 минут
Update

Добавлено через 2 часа 50 минут
Update
0
15 / 15 / 0
Регистрация: 09.02.2012
Сообщений: 30
05.01.2014, 02:01
Если вы обращались ко мне, то так =) :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/" + version;
var md5 = System.Security.Cryptography.MD5.Create();
 
foreach (var d1 in new System.IO.DirectoryInfo(path).GetDirectories())
{
    foreach (var d2 in d1.GetDirectories())
    {
        foreach (var f in d2.GetFiles())
        {
            MessageBox.Show(String.Format("MD5: {0} - FileName: {1}",
                BitConverter.ToString(md5.ComputeHash(f.OpenRead()))
                    .Replace("-", string.Empty),
                f.Name));
        }
    }
}
0
5 / 5 / 3
Регистрация: 31.07.2013
Сообщений: 98
05.01.2014, 11:05  [ТС]
Цитата Сообщение от Серега_EX Посмотреть сообщение
Если вы обращались ко мне, то так =) :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/" + version;
var md5 = System.Security.Cryptography.MD5.Create();
 
foreach (var d1 in new System.IO.DirectoryInfo(path).GetDirectories())
{
    foreach (var d2 in d1.GetDirectories())
    {
        foreach (var f in d2.GetFiles())
        {
            MessageBox.Show(String.Format("MD5: {0} - FileName: {1}",
                BitConverter.ToString(md5.ComputeHash(f.OpenRead()))
                    .Replace("-", string.Empty),
                f.Name));
        }
    }
}
Тут вычисляется Hash всех файлов в папке.А мне нужно выбрать.
0
15 / 15 / 0
Регистрация: 09.02.2012
Сообщений: 30
05.01.2014, 14:39
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var files = new string[] { "file1", "file2", "file3" }; // и т.д.
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/" + version;
var md5 = System.Security.Cryptography.MD5.Create();
 
foreach (var d1 in new System.IO.DirectoryInfo(path).GetDirectories())
{
    foreach (var d2 in d1.GetDirectories())
    {
        foreach (var f in d2.GetFiles())
        {
            if (files.Contains(f.Name))
                MessageBox.Show(String.Format("MD5: {0} - FileName: {1}",
                    BitConverter.ToString(md5.ComputeHash(f.OpenRead()))
                        .Replace("-", string.Empty),
                    f.Name));
        }
    }
}
0
5 / 5 / 3
Регистрация: 31.07.2013
Сообщений: 98
05.01.2014, 18:16  [ТС]
Цитата Сообщение от Серега_EX Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var files = new string[] { "file1", "file2", "file3" }; // и т.д.
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/" + version;
var md5 = System.Security.Cryptography.MD5.Create();
 
foreach (var d1 in new System.IO.DirectoryInfo(path).GetDirectories())
{
    foreach (var d2 in d1.GetDirectories())
    {
        foreach (var f in d2.GetFiles())
        {
            if (files.Contains(f.Name))
                MessageBox.Show(String.Format("MD5: {0} - FileName: {1}",
                    BitConverter.ToString(md5.ComputeHash(f.OpenRead()))
                        .Replace("-", string.Empty),
                    f.Name));
        }
    }
}
К папкам.
Например:
Есть папка "test" в ней n папок.Нужно выбрать три из них (имена известны) и вычислить hash из этой папки(метод для hash находится в 1 посте)

Добавлено через 2 часа 38 минут
Update!
0
5 / 5 / 3
Регистрация: 31.07.2013
Сообщений: 98
11.01.2014, 17:00  [ТС]
Update
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.01.2014, 17:00
Помогаю со студенческими работами здесь

Получить список папок в папке но не в подпапках
Здравствуйте. Как можно получить список имен папок и их количество в определенной папке но не в подпапках тоесть просто список папок...

Получить список папок и вложенных папок, отсортированных по размеру
Как можно получить список папок и вложенных папок, отсортированных по размеру

как можно получить список файлов и папок в указанной папке?
Привет всем. Хочу короче, сделать shell extention. Но мне надо сделать меню, которое содержит _ВСЕ_ файлы и директории указаной...

Требуется получить список всех вложенных папок (с полными их путями) в данной локальной папке.
Требуется получить список всех вложенных папок (с полными их путями) в данной локальной папке. Заранее спасибо.

txt файл с именами папок внутри самих папок (в кодировке 1251)
Добрый вечер ) Есть несколько сотен папок, в каждой из которых нужно создать файл album.txt в котором будет записано имя этой папки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru