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

Быстро проверить файл на тип

19.03.2014, 18:33. Показов 875. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день!Ребят есть вопрос. Я например рекурсивно реализовал поиск файла, но также надо проверять
содержимое файла. И получается если попадается какой нибудь файл размер от 1.5 гб(например фильм, образ или еще что нибудь) - то резко возрастает потребляемая память и не останавливается, пока процесс не завершится. Все выполняется в фоновом потоке. Так вот, как определить в файле текст содержится или какие то двоичные данные и т.п.? Не по расширению же,т.к. файлу с фильмом можно и .txt поставить.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2014, 18:33
Ответы с готовыми решениями:

Быстро и оптимально проверить, содержит ли файл только числа
Дан фаил f1.txt, можно ли определить содержит файл только числа, без нудного считывания в цикле и просмотра каждой итерации, чтоб заменить...

Данные из текстбоксов проверить на тип и записать в файл
Доброго времени суток. Подскажите, пожалуйста, как при нажатии кнопки взять в MFC приложении данные из всех TextBox-ов на форме, проверить...

Быстро и оптимально проверить файлы на идентичность
Интересует какой способ самый быстрый. Проверить надо сотни тысяч файлов. Я себе представляю проверку по первых n - битах. Но как...

7
 Аватар для JonMagon
20 / 20 / 3
Регистрация: 15.02.2013
Сообщений: 59
19.03.2014, 18:35
NowMatrix, в смысле? Чем вам текст не двоичные данные?
Для чего у вас идет чтение содержимого? Вероятно, это не самый правильный алгоритм.
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
19.03.2014, 18:38  [ТС]
JonMagon, не правильно выразился. Для поиска текста в файле.
Вот кусок кода:
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
 private void BeginSearch(Ini ini)
        {
            DirectoryInfo dir = new DirectoryInfo(ini.SearchFolder);
            Regex fileNameRegex = new Regex(@"" + ini.SearchFileName, RegexOptions.IgnoreCase);
            Regex textNameRegex = new Regex(@"" + ini.SearchFileText, RegexOptions.IgnoreCase);
 
            FileInfo[] files = dir.GetFiles();
            if (ini.SearchFileName != "")
            {
                foreach (FileInfo file in files)
                {
                    if (!fileNameRegex.IsMatch(file.Name))
                    {
                        string temp = null;
                        using (StreamReader sr = new StreamReader(file.FullName, Encoding.Default))
                        {
                            temp = sr.ReadToEnd(); //тут как раз и начинает есть память.
                        }
                        if (temp != null && temp != "")
                        {
                            if (textNameRegex.IsMatch(temp))
                            {
                                worker.ReportProgress(0);
                                string b = temp;
                            }
                        }
                    }
                    else
                    {
                        worker.ReportProgress(0);
                        string a = file.Name;
                    }
                }
            }
 
            DirectoryInfo[] dirs = dir.GetDirectories();
            foreach (DirectoryInfo d in dirs)
            {
                ini.SearchFolder = d.FullName;
                BeginSearch(ini);
            }
        }
Можно конечно по строке считывать и обрабатывать, но хотелось бы другое решение.
По размеру файла тоже не хочется ограничиваться.
0
 Аватар для JonMagon
20 / 20 / 3
Регистрация: 15.02.2013
Сообщений: 59
19.03.2014, 18:41
NowMatrix, почему бы просто не ограничить поиск текста только для файлов с расширением .txt?
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
19.03.2014, 18:46  [ТС]
JonMagon, не, так не пойдет. Любой файл, содержащий текст может иметь любое расширение.

Добавлено через 2 минуты
На счет памяти думаю смогу решить, а как определить текст там или нет...
0
 Аватар для JonMagon
20 / 20 / 3
Регистрация: 15.02.2013
Сообщений: 59
19.03.2014, 18:52
Цитата Сообщение от NowMatrix Посмотреть сообщение
а как определить текст там или нет
Вряд ли есть вариант, кроме как считывать кодировку файла (но это бред).
Поиск эксплорера в винде текст ищет исключительно только в .txt файлах (плюс-минус еще пару расширений).
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
19.03.2014, 18:57  [ТС]
Эхх,ладно подумаю еще.
0
 Аватар для makedonsky94
45 / 45 / 4
Регистрация: 14.02.2013
Сообщений: 139
19.03.2014, 18:59
Можно даже открыть файл автокада и получишь текст в utf-8, но зачем тебе оно надо?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2014, 18:59
Помогаю со студенческими работами здесь

Как быстро проверить значения boolean
Допустим, есть программа которая перевод из одной системы измерения в другую (из биты в байты например). Так вот, у меня сначала проверяет...

Текстовый формат UNIX: Как быстро идентифицировать такой тип файлов
Посмотрите программу: и попробуйте загрузить в неё два файла: ndv-txt-13-10.gb - загружается нормально, это текстовый файл того...

Как быстро проверить массив на наличие равных элементов
Можно написать такую функцию: int busy(int j) { foreach (i; 0 .. j) if (a == a) return 0; return 1; } Но меня...

Быстро создать пару таблиц и проверить запрос SQL
Добрый день. Подскажите, где можно быстро накидать пару таблиц и проверить SQL запрос. Не хочу для этого качать какой-нибудь SQL...

Как быстро проверить, что строка начинается с большой буквы
Как быстро проверить, что строка начинается с заглавной русской буквы? Можно с помощью регулярного выражения "^" но есть...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru