Получение информации из файла без обхода его содержимого - PullRequest
0 голосов
/ 04 февраля 2012

Этот вопрос заставил меня искать, что еще можно получить из файла, не просматривая его содержимое (значит, не вводя содержимое с помощью ifstream или getc и т. Д.).

Кроме размера файлаи количество символов, какую еще информацию я могу собрать?Я искал fseek и обнаружил, что могу использовать SEEK_SET, SEEK_CUR и SEEK_END, которые позволяют мне только найти конец файла, начало файла и текущий указатель.

Чтобы задать вопрос, я специально хочу спросить:

  1. Можно ли считать вхождения какого-либо символа или типа символа (перевод строки и т. Д.)?
  2. Можно ли сопоставить его содержимое с определенным шаблоном?
  3. Использование этих методов быстрее, чем чтение файла несколько раз?

И я спрашиваю о Microsoft Windows, а не о Linux.

Ответы [ 3 ]

3 голосов
/ 04 февраля 2012

1) Нет , поскольку поиск чего-либо в непредсказуемых условиях требует тщательного изучения содержимого.Экзамен - это чтение.Конечно, вы можете собирать некоторую статистику раньше, но вам нужно просматривать данные не реже одного раза.Вы можете использовать другие приложения, чтобы сделать это неявно, но они также будут проходить через ваш файл с самого начала до конца.Вы можете организовать свой файл каким-либо способом, чтобы получить необходимую информацию с минимальным количеством операций чтения, но все это зависит от вашей задачи, и нет общего подхода (потому что любая общая задача заключается в проверке всей структуры источника).

2) Также Нет (см. Выше)

3) Да .Храните как можно больше (или требуется для задачи) в памяти (это называется caching ).Например, используйте отображение (см. MapViewOfFile для Windows и mmap (2) в * nix системах), здесь используется некоторый механизм кэширования в системе.

3 голосов
/ 04 февраля 2012
  1. Нет
  2. Нет
  3. Зависит от того, действительно ли необходимо прочитать файл несколько раз.

Здесь нет чудес. В первом вопросе был «ярлык», потому что количество символов в файле равно его размеру в байтах (точнее говоря, текстовый файл рассматривается как последовательность символов, каждый из которых представлен одним байтом). *

2 голосов
/ 04 февраля 2012

Структура stat содержит информацию о файле, включая информацию о правах доступа, владельце, размере, доступе и дате создания.Что касается метаданных, возможно, есть API для привязки к поисковой базе данных Windows, который может разрешать поиск по другим критериям, например по атрибутам контента (обычно я парень из Linux, поэтому я не знаю, что Windows предлагает в этом отношении).

...