Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 120

Посимвольное сравнение имен файлов из папки

18.05.2015, 08:57. Показов 891. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, задача следующая: вытащить файлы .pdf и .doc из папки на компьютере (у меня выбор папки сделан через dialog), сравнить относительно pdf (если существует файл .doc, который хотя бы частично, но соответствует (количество одинаковых символов при сравнении .pdf и .doc больше имени .pdf файла))подскажите, пожалуйста, что я не так сделал? Почему в dgv выводятся данные некорректно? При наличии файла .doc с именем, часть которого полностью соответствует одному .pdf из кучи файлов прога выдает - "нет", такого файла нет в папке... Помогите, вот мой код:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//Выбор пути к папке, в которой лежат файлы .doc и .pdf
            string path = null;
            using (var dialog = new FolderBrowserDialog())
                folderBrowserDialog1.SelectedPath = @"E:\txtFILE";
                if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                {
                    path = folderBrowserDialog1.SelectedPath;
                }
            Class1.Path = path; //Передаем в класс Class1 путь к выбраной пользователем папке
 
            dataGridView1.ClearSelection(); //Очистка DataGridView
            
            //Получаем из выбраной директории список файло .doc
            string[] filesDOC = System.IO.Directory.GetFiles(@"" + Class1.Path, "*.doc");
            List<string> spisok_imenDOC = new List<string>();
            int kolich_filesDOC = filesDOC.Count(); //Количество файлов в директории
            foreach (var file in filesDOC) //Формируем список с именами
            spisok_imenDOC.Add(Path.GetFileName(file));//добавляем в список имена файлов    
 
            //Получаем из выбраной директории список файлов .pdf
            string[] filesPDF = System.IO.Directory.GetFiles(@"" + Class1.Path, "*.pdf");
            List<string> spisok_imenPDF = new List<string>();
            int kolich_filesPDF = filesPDF.Count(); //Количество файлов в директории
            foreach (var file in filesPDF) //Формируем список с именами
            spisok_imenPDF.Add(Path.GetFileName(file)); //добавляем в список имена файлов
 
            string nameDOC = ""; //Имя документа .doc
            string namePDF = ""; //Имя документа .pdf
            int lengthNameDOC = 0; //Количество символов в имени файла .doc
            double lengthNamePDF = 0; //Количество символов в имени файла .pdf
            for (int t = 0; t < kolich_filesPDF; t++)
            {
                namePDF = spisok_imenPDF[t].Remove(spisok_imenPDF[t].Length - 4);
                lengthNamePDF = namePDF.Length;
                int KolichestvOdinakovSimvol = 0; //Количество одинаковых символов
                for (int k = 0; k < kolich_filesDOC; k++)
                {
                    KolichestvOdinakovSimvol = 0;
                    nameDOC = spisok_imenDOC[k].Remove(spisok_imenDOC[k].Length - 4);
                    lengthNameDOC = nameDOC.Length;
 
                    int gh = String.Compare(nameDOC, namePDF);
                    MessageBox.Show("Новый метод сравнения строк = " + gh);
 
                    for (int y = 0; y < lengthNameDOC; y++)
                    {
                        for (int n = y; n < lengthNameDOC; )
                        {
                            char chDOC = nameDOC[n];// символ в имени DOC
                            for (int n1 = y; n1 < lengthNamePDF; )
                            {
                                char chPDF = namePDF[n1];// символ в имени PDF
                                if (chDOC == chPDF)
                                {
                                    KolichestvOdinakovSimvol++;
                                }
                                if (chDOC != chPDF)
                                {
                                    break;
                                }
                                break;
                            }
                            break;
                        }
                    }
                }
 
                if (KolichestvOdinakovSimvol >= lengthNamePDF-1)
                {
                    dataGridView1.Rows.Add();
                    dataGridView1.Rows[t].Cells[0].Value = spisok_imenPDF[t];
                    dataGridView1.Rows[t].Cells[1].Style.BackColor = Color.Green;
                    dataGridView1.Rows[t].Cells[1].Style.ForeColor = Color.Black;
                    dataGridView1.Rows[t].Cells[1].Value = "Да";
                }
                if (KolichestvOdinakovSimvol <= lengthNamePDF-1)
                {
                    dataGridView1.Rows.Add();
                    dataGridView1.Rows[t].Cells[0].Value = spisok_imenPDF[t];
                    dataGridView1.Rows[t].Cells[1].Style.BackColor = Color.Red;
                    dataGridView1.Rows[t].Cells[1].Style.ForeColor = Color.Black;
                    dataGridView1.Rows[t].Cells[1].Value = "Нет";
                }
                KolichestvOdinakovSimvol = 0;
            }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2015, 08:57
Ответы с готовыми решениями:

Посимвольное сравнение 2 файлов
Полное задание:Реализация посимвольного сравнения двух файлов или страниц в интернете. Выводить требуется все отличающиеся символы в...

Копирование файлов в нужные папки, исходя из имён файлов
подскажите, задача примерно аналогичная в папке множество файлов wav, у всех в начале присутствует гггг_мм, хочу их раскидать по папкам...

Сравнение имен файлов
Подскажите,как решить задачу? Есть некоторое количество строк в определенном порядке(имена файлов ) в text.txt, каждая новая строка должна...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2015, 08:57
Помогаю со студенческими работами здесь

Подставление имен файлов из папки в cmd
Здравствуйте! С недавних пор осваиваю cmd много что получилось осуществить, но остались две задачи! Начну с простой: Скрипт...

Сканирование папки и подстановка имен файлов
for /f &quot;tokens=*&quot; %%a in ('Dir /b/s/a-d C:\isql.exe') Do Set isql_path=%%a set &quot;Fld=C:\Program Files\Programka&quot; for /f &quot;tokens=*&quot; %%a...

Сравнение имен файлов в двух каталогах
Подскажите, пожалуйста, как можно сравнить по разным параметрам (расширение,имя) файлы, находящиеся в разных папках на С++? Вводим пути...

Список имен файлов из папки загрузить в ComboBox
Собственно в папке есть файлы (1.rpt, 2.rpt, 3.rpt) и тд. Как их вытащить в ComboBox? Чтобы там был список этих файлов из папки?

Копирование файлов в нужные папки в зависимости от их имён
Подскажите, пожалуйста. Можно ли реализовать такую функцию? Есть файлы вида XXX123456789 (цифры разные само собой) YYY123456789 и т.д....


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru