Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
http://jokenews.ru/
10 / 10 / 7
Регистрация: 07.02.2013
Сообщений: 179
1

Получение md5 и размера файлов в папках и подпапках

22.11.2015, 00:18. Показов 1477. Ответов 2
Метки нет (Все метки)

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

C#
1
2
3
4
bin32\symsrv.dll
bin32\TextEngine.dll
bin32\XRenderD3D9.dll
Data\animationmarkers\animationmarkers.pak
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
private void Run()
        {
            var pathes = new List<string>();
            string directory = tb1.Text;
            if (Directory.Exists(directory))
            {
                SearchFiles(directory, pathes, true, directory.Length + 1);
            }
 
            for (int i = 0; i < pathes.Count; i++)
            {
                StreamWriter textFile = new StreamWriter(tb2.Text + "/patchlist.txt");
                for(i=0; i < pathes.Count; i++){
                    textFile.Write((pathes[i]) + Environment.NewLine);
                    }
            }
        }
 
        private void SearchFiles(string root, List<string> pathes, bool cropBaseDir = false, int cropLength = 0)
        {
            DirectoryInfo dirInfo = new DirectoryInfo(root);
            DirectoryInfo[] subDirs = dirInfo.GetDirectories();
            for (int i = 0; i < subDirs.Length; ++i)
            {
                SearchFiles(subDirs[i].FullName, pathes, cropBaseDir, cropLength);
            }
 
            FileInfo[] fileInfos = dirInfo.GetFiles();
 
            for (int i = 0; i < fileInfos.Length; ++i)
            {
                string directory = cropBaseDir
                    ? fileInfos[i].FullName.Remove(0, cropLength)
                    : fileInfos[i].FullName;
                pathes.Add(directory);
            }
        }
Вопрос - как к этому методу добавить получение хеша каждого имеющегося файла а так же его размер?

Добавлено через 17 часов 20 минут
Решил вопрос с получением хеш, но с размером файлов какая то беда. Все они весят по 32 байта, а последний без размера

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class HashSize
        {
            public string Name { get; set; }
            public string Hash { get; set; }
 
            public override string ToString()
            {
                return string.Format("{0} {1} {2}", Name, Hash, Hash.Length);
            }
        }
 
 
        private void Run()
        {
            var pathes = new List<HashSize>();
            string directory = tb1.Text;
            if (Directory.Exists(directory))
            {
                SearchFiles(directory, pathes, true, directory.Length + 1);
            }
 
            for (int i = 0; i < pathes.Count; i++)
            {
                StreamWriter textFile = new StreamWriter(tb2.Text + "/patchlist.txt");
                for (i = 0; i < pathes.Count; i++)
                {
                    textFile.Write((pathes[i]) + Environment.NewLine);
                }
            }
        }
 
        private void SearchFiles(string root, List<HashSize> pathes, bool cropBaseDir = false, int cropLength = 0)
        {
            DirectoryInfo dirInfo = new DirectoryInfo(root);
            DirectoryInfo[] subDirs = dirInfo.GetDirectories();
            for (int i = 0; i < subDirs.Length; ++i)
            {
                SearchFiles(subDirs[i].FullName, pathes, cropBaseDir, cropLength);
            }
            FileInfo[] fileInfos = dirInfo.GetFiles();
            for (int i = 0; i < fileInfos.Length; ++i)
            {
                string directory = cropBaseDir
                    ? fileInfos[i].FullName.Remove(0, cropLength)
                    : fileInfos[i].FullName;
                pathes.Add(new HashSize { Name = directory, Hash = HashHelper.GetMD5HashOfFile(fileInfos[i].FullName) });
            }
        }
Добавлено через 1 час 0 минут
появилась проблема в том что программа записывает не все файлы, (около 50 пропустила) а так же последняя строка урезана. В чем может быть дело?

Добавлено через 8 часов 44 минуты
Вопрос решен, а дело было в лишнем цикле
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2015, 00:18
Ответы с готовыми решениями:

Поиск файлов в папках и подпапках
Здравствуйте! Есть задача, в которой необходимо выполнить вход во все папки и подпапки некой...

Поиск файлов в папках и подпапках
Что неправильно в коде? Вобщем есть функция func(path, find), с помощью которой пытаюсь найти файл...

Поиск файлов в папках и подпапках
Подскажите как сделать поиск папок и под папках? Для поиска папок делаю так: static string sd =...

Поиск xml файлов в папках и подпапках. C#
(Первый скрин) Есть форма, первая кнопка выбирает путь к xml файлу. Нужно чтобы выбирала путь к...

2
В поиске
103 / 51 / 17
Регистрация: 20.04.2014
Сообщений: 812
22.11.2015, 00:32 2
6stprod, А в каком? не выложите конечный вариант?
0
http://jokenews.ru/
10 / 10 / 7
Регистрация: 07.02.2013
Сообщений: 179
22.11.2015, 00:34  [ТС] 3
КВА696,
C#
1
2
3
4
5
6
7
8
for (int i = 0; i < pathes.Count; i++)
            {
                StreamWriter textFile = new StreamWriter(tb2.Text + "/patchlist.txt");
                for (i = 0; i < pathes.Count; i++)
                {
                    textFile.Write((pathes[i]) + Environment.NewLine);
                }
            }
в этом месте два одинаковых цикла, убрал один)
2
22.11.2015, 00:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2015, 00:34
Помогаю со студенческими работами здесь

Поиск файлов по нескольким маскам в папках и подпапках
как осуществить поиск файлов сразу по нескольким маскам в папках и подпапках ? используя этот...

Поиск файлов в папках и подпапках андроид-делфи
Отладил запустил код чисто на делфи- отработал нашол файлы в папках и подпапках. procedure...

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

Получение всех имен файлов в папке и во вложенных подпапках
public partial class Form1 : Form { public Form1() { ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru