Файлы, потоки...

Доброго Вам времени суток, уважаемые программисты! Прошу объяснения следующих вопросов. 1) Каким образом реализованы сами файлы. (имею ввиду, каким образом я могу оперировать файлами, не используя стандартных классов[ну и тем более этого FILE]) {т.е, допустим, я хочу написать класс файл. с чего начать?} 2) Потоки... каким образом реализованы они. Как написать класс поток, не используя заготовок. 3) Почему не работает этот кусок кода:
void File::fSetSize()
{
    ifstream* file = NULL;
    char ch;
    if(cPatch==NULL)
    {
        cout << "\nMissing file to get size\n";
        return;
    }
    while(true)
    {
        file = new ifstream(cPatch);
        while((!file->eof())||(!file->fail()))
        {
            *file  >> ch;
            cout << "\n" << ch << endl;
            iSize++;
        }
    }
    return;
}
cPatch - char*, полный путь текстового файла. iSize - размер файла, который я пытаюсь узнать. На выводе получается много больше символов, чем есть в файле. Притом, символы только те, которые есть в файле. Что же не так? ЗЫ. Заранее спасибо!!!!!!
3 ответа

1. Если Вы считаете, что FILE - это класс, то Вы ошибаетесь. Если не ошибаюсь это структура, которая работает на C. Чтобы начать писать свой класс, нужно изучить функции для работы с файлами. 2. Вопрос не понял. Но думаю поможет: http://www.cyberguru.ru/programming/...p4-page40.html 3. В Вашем коде бесконечный цикл с 12 по 20 строки. Зачем Вам while(true)?


Александр Елис, 1) физически текстовый файл - это некая последовательность байтов на диске. Кроме того у каждого файла есть набор мета-данных (дата создания/доступа/изменения, владелец, права доступа, etc... Точный набор этих данных зависит от системы.). Для работы с файлами в *NIX есть системные вызовы open()/read()/write()/close(). В WinAPI должно быть что-нибудь подобное. Начните с изучения этих моментов. 2) настоятельно рекомендую изучить работу с существующими классами потоков, а потом уже браться за разработку собственного. 3) опять же настоятельно рекомендую изучить работу с классами потоков...


Про то, что FILE - это не класс, а сишная структура, я отлично понимаю. Про функции работы с файлами: я хочу понять более фундаментальный уровень. Что именно представляет собой файл, каким образом написаны функции для работы с ним. За ссылку спасибо. Ну а про бесконечнй цикл - спасибо, что-то я перезанимался сегодня... Спасибо огромное всем откликнувшимся. Тему можно закрывать.