класс работы с файлам(и)

Модератор: Модераторы разделов

warp
Сообщения: 135

класс работы с файлам(и)

Сообщение warp »

задался я целью написать прогу которая будет работать с файлами на с++, нужную для дополнения файлов префиксом даты создания файла, или переименования их в последовательность типа 1,2,3 ... n. есно хочу потом её расширить для других нужд, потому выбрал для реализации с++ из-за присутсвия в нём ООП. вообщем нужно написать два класса - первый это class file, а второй fileMap. на пока я запланировал что fileMap будет наследовать то file, но в прочем ещё не решил окончательно - мб лучше будет использовать композицию. но это разговор ни о чём пока программа не пишется.

терь по подробней об классах.

file - изначально я запланировал что он будет получать информацию сам - мне нужно имя файла и дата его создания. потом за счёт этих данных он будет генерировать новое имя для файла - дата_имя и переименовывать его. обработка данных будет зиждица на 4 функциях - получить название(имя) папки (каталога, файла. вобщем того что будет лежать в папке) и помещать их в память, редактировать эти данные в памяти, помечать эти данные для последующего перемещения (удаления), и после нажатия кнопочки "y" делать то что было запланированно, но уже с реальным файлом.

fileMap же должен обрабатывать массивы file, заботится об их создании после того как я укажу папку которую он должен прочитать и создать массив file'ов.

на данном этапе обработку ошибок пока не встраиваю, так как это сильно меня запутает. так же пока никакой оптимизации - пишу так чтобы в любое время можно было пнять о чём это я. потом, когда уже прога будет отлажена, буду эксперемнтировать с оптимизацией, а пока просто ясный алгоритм.

вообщем на пока что имеется только каркасы классов - так как с реализацие произошла проблема. о ней ниже.
надеюсь что поясненей достаточно ))
и так
1. как я писал, изначально я хотел что бы file сам получал имя файла и дату его создания, но тут есть загвозда - ему нужно собщать имя файла что б он сам его мог прочесть. а это выглядит глупо, да и не рационально. так вот - лучше ли будет перепоручить это fileMap'у и как это будет выглядять? конечно у меня есть догадка, но я не уверен что это будет работать и тем болие пока я не взялся за реализацию в виду сомнения в рациональности подхода. вот алгоритм в общих чертах: fileMap получет от меня путь к папке которую нужно просканировать, открывает её, и читает, получив имя папки, присваивает её file'у, затем получает дату его создания и тоже присваевает её file'у. затем получает следущие имя папки, создаёт новый экземпляр file и повторяет выше написанное уже с ним.
2. хм... этот вопрос сильно зависит от предыдущего, так что пока его не буду задовать. xD
за мировое господство! банзай, товарищи!
Спасибо сказали:
warp
Сообщения: 135

Re: класс работы с файлам(и)

Сообщение warp »

я ещё тут подумал.
мб лучше будет перевалить все заботы по открытию, удалени, перемещению файлов, на fileMap а класс file сделать лиш классом для хранения данных, перевалив на конструктор выделение и обнуление памяти, получение от fileMap имени и даты. ну и оставив лиш одну функцию-утилиту (private функция для обслуживания внутри класса) для редактирования этих данных?
за мировое господство! банзай, товарищи!
Спасибо сказали:
Аватара пользователя
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu

Re: класс работы с файлам(и)

Сообщение Luinnar »

Я бы такую задачу просто в bash решал. Зачем огород городить?

Вот например:

Код: Выделить всё

for i in `ls`
do
   # здесь делаем с файлом, что хотим
done


Чтобы получить дату модификации файла можно использовать команду stat
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: класс работы с файлам(и)

Сообщение Uncle_Theodore »

В русской литературе сей феномен известен под названием "Мартышка и очки". Так всегда выходит, когда вместо цепочки планирования
Задача -> алгоритм -> средства реализации
употребляется цепочка
Ой какая клевая фишка!! -> куда бы ее присобачить?? -> моя программа делает много красивого, но ничего путного, с ней я точно получу работу программиста в Майкрософте!!

Автор, если Вы изучаете ООП, возьмите какую-нибудь классическую задачу из учебника. Рисуйте формы, например, или обрабатывайте список сотрудников фирмы.
К слову так, время создания файла не фиксируется в Юниксовых файловых системах. Только время последней модификации. Удачи.
Спасибо сказали:
warp
Сообщения: 135

Re: класс работы с файлам(и)

Сообщение warp »

мне то со стороны взглянуть на себя сложновато, вот мне и кажется что это цепочка всётаки из разряда "Задача -> алгоритм -> средства реализации" ну раз вам виднее то соглашусь. вообще я только учюсь и поподать в такие ситуации, имхо нормально, так что выпады, если они конечно тут есть, приму как критику ;]. но вот что огорчило, так это то что дата создания не фиксруется - я думал для начала это будет неплохим способом опробывать свои силы на чём то элементарном, жаль только что пример задачки оказался нерешаем, а затем уже перёти к тому что запланировал в самом начале - расширить класс для возможности сортировки mp3'шек по папкам, названным в соответсвии тегам в файле. чего уже на баше сделать не получится. или я ошибаюсь?
за мировое господство! банзай, товарищи!
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: класс работы с файлам(и)

Сообщение Uncle_Theodore »

warp писал(а):
15.04.2008 18:05
мне то со стороны взглянуть на себя сложновато, вот мне и кажется что это цепочка всётаки из разряда "Задача -> алгоритм -> средства реализации" ну раз вам виднее то соглашусь. вообще я только учюсь и поподать в такие ситуации, имхо нормально, так что выпады, если они конечно тут есть, приму как критику ;]. но вот что огорчило, так это то что дата создания не фиксруется - я думал для начала это будет неплохим способом опробывать свои силы на чём то элементарном, жаль только что пример задачки оказался нерешаем, а затем уже перёти к тому что запланировал в самом начале - расширить класс для возможности сортировки mp3'шек по папкам, названным в соответсвии тегам в файле. чего уже на баше сделать не получится. или я ошибаюсь?

Ошибаетесь. Посмотрите темки в Мультимедии на предмет извлечения тэгов и мануал Баша на предмет сортировки файлов.
И мне не виднее, я Вам просто намекаю, что "что-то элементарное для изучения парадигмы" пишется в качестве упражнений в учебниках. И выполнение этих упражнений развивает в человеке интуицию применения ООП или отказа от использования ООП в пользу других средств.
А выпады -- какие выпады? Чиста отвлеченный разговор об искусстве и программировании... :)
Спасибо сказали:
warp
Сообщения: 135

Re: класс работы с файлам(и)

Сообщение warp »

Ошибаетесь. Посмотрите темки в Мультимедии на предмет извлечения тэгов и мануал Баша на предмет сортировки файлов.

в следующий раз буду изходить из того что баш умеет всё. xD

И мне не виднее, я Вам просто намекаю, что "что-то элементарное для изучения парадигмы" пишется в качестве упражнений в учебниках. И выполнение этих упражнений развивает в человеке интуицию применения ООП или отказа от использования ООП в пользу других средств.

хы - хы! ну очнь мне захотелосбь самому без учебника чтонибудь попробовать :}. а как вы считаете для каких целей применимо ООП?
за мировое господство! банзай, товарищи!
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: класс работы с файлам(и)

Сообщение Uncle_Theodore »

warp писал(а):
15.04.2008 20:24
в следующий раз буду изходить из того что баш умеет всё. xD

Не надо из этого исходить. Надо из задачи исходить. :)
хы - хы! ну очнь мне захотелосбь самому без учебника чтонибудь попробовать :}. а как вы считаете для каких целей применимо ООП?

ООП применим в задачах, в которых существует четкая естесственная иерархия типов объектов. Там он оправдан и показывает свою истинную мощь. Также, есть области, где без него трудно обойтись из-за специфической архитектуры приложения.
Примером первого типа задач служит знаменитая программа рисования форм. Базисный класс shape наледуется классами circle, square, rectangle, triangle and what not, потом наследники перегружают метод "рисовать", а в программе Вы заводите массив указателей на shape и командуете им всем "рисуйся!" в одном цикле.
Примером второго класса задач может служить написание плагинов для уже имеющейся программы. Программист оставляет интерфейс, который может использоваться Вашим плагином. Вам, собственно, даже и не надо знать, как работает основная программа. Интерфейса достаточно для разработки плагина.

Все это написано в умных книжках, которые надо читать. И делать из них упражнения. :) И будет Вам щастье.
Спасибо сказали:
warp
Сообщения: 135

Re: класс работы с файлам(и)

Сообщение warp »

о_0 ! пасибки.

ps

в следующий раз буду изходить из того что баш умеет всё. xD


Не надо из этого исходить. Надо из задачи исходить. smile.gif

это я про то, что не ожидал, что в консоле можно сделать такое.
за мировое господство! банзай, товарищи!
Спасибо сказали: