задался я целью написать прогу которая будет работать с файлами на с++, нужную для дополнения файлов префиксом даты создания файла, или переименования их в последовательность типа 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
класс работы с файлам(и)
за мировое господство! банзай, товарищи!
-
warp
- Сообщения: 135
Re: класс работы с файлам(и)
я ещё тут подумал.
мб лучше будет перевалить все заботы по открытию, удалени, перемещению файлов, на fileMap а класс file сделать лиш классом для хранения данных, перевалив на конструктор выделение и обнуление памяти, получение от fileMap имени и даты. ну и оставив лиш одну функцию-утилиту (private функция для обслуживания внутри класса) для редактирования этих данных?
мб лучше будет перевалить все заботы по открытию, удалени, перемещению файлов, на fileMap а класс file сделать лиш классом для хранения данных, перевалив на конструктор выделение и обнуление памяти, получение от fileMap имени и даты. ну и оставив лиш одну функцию-утилиту (private функция для обслуживания внутри класса) для редактирования этих данных?
за мировое господство! банзай, товарищи!
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: класс работы с файлам(и)
Я бы такую задачу просто в bash решал. Зачем огород городить?
Вот например:
Чтобы получить дату модификации файла можно использовать команду stat
Вот например:
Код: Выделить всё
for i in `ls`
do
# здесь делаем с файлом, что хотим
doneЧтобы получить дату модификации файла можно использовать команду stat
-
Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: класс работы с файлам(и)
В русской литературе сей феномен известен под названием "Мартышка и очки". Так всегда выходит, когда вместо цепочки планирования
Задача -> алгоритм -> средства реализации
употребляется цепочка
Ой какая клевая фишка!! -> куда бы ее присобачить?? -> моя программа делает много красивого, но ничего путного, с ней я точно получу работу программиста в Майкрософте!!
Автор, если Вы изучаете ООП, возьмите какую-нибудь классическую задачу из учебника. Рисуйте формы, например, или обрабатывайте список сотрудников фирмы.
К слову так, время создания файла не фиксируется в Юниксовых файловых системах. Только время последней модификации. Удачи.
Задача -> алгоритм -> средства реализации
употребляется цепочка
Ой какая клевая фишка!! -> куда бы ее присобачить?? -> моя программа делает много красивого, но ничего путного, с ней я точно получу работу программиста в Майкрософте!!
Автор, если Вы изучаете ООП, возьмите какую-нибудь классическую задачу из учебника. Рисуйте формы, например, или обрабатывайте список сотрудников фирмы.
К слову так, время создания файла не фиксируется в Юниксовых файловых системах. Только время последней модификации. Удачи.
-
warp
- Сообщения: 135
Re: класс работы с файлам(и)
мне то со стороны взглянуть на себя сложновато, вот мне и кажется что это цепочка всётаки из разряда "Задача -> алгоритм -> средства реализации" ну раз вам виднее то соглашусь. вообще я только учюсь и поподать в такие ситуации, имхо нормально, так что выпады, если они конечно тут есть, приму как критику ;]. но вот что огорчило, так это то что дата создания не фиксруется - я думал для начала это будет неплохим способом опробывать свои силы на чём то элементарном, жаль только что пример задачки оказался нерешаем, а затем уже перёти к тому что запланировал в самом начале - расширить класс для возможности сортировки mp3'шек по папкам, названным в соответсвии тегам в файле. чего уже на баше сделать не получится. или я ошибаюсь?
за мировое господство! банзай, товарищи!
-
Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: класс работы с файлам(и)
warp писал(а): ↑15.04.2008 18:05мне то со стороны взглянуть на себя сложновато, вот мне и кажется что это цепочка всётаки из разряда "Задача -> алгоритм -> средства реализации" ну раз вам виднее то соглашусь. вообще я только учюсь и поподать в такие ситуации, имхо нормально, так что выпады, если они конечно тут есть, приму как критику ;]. но вот что огорчило, так это то что дата создания не фиксруется - я думал для начала это будет неплохим способом опробывать свои силы на чём то элементарном, жаль только что пример задачки оказался нерешаем, а затем уже перёти к тому что запланировал в самом начале - расширить класс для возможности сортировки mp3'шек по папкам, названным в соответсвии тегам в файле. чего уже на баше сделать не получится. или я ошибаюсь?
Ошибаетесь. Посмотрите темки в Мультимедии на предмет извлечения тэгов и мануал Баша на предмет сортировки файлов.
И мне не виднее, я Вам просто намекаю, что "что-то элементарное для изучения парадигмы" пишется в качестве упражнений в учебниках. И выполнение этих упражнений развивает в человеке интуицию применения ООП или отказа от использования ООП в пользу других средств.
А выпады -- какие выпады? Чиста отвлеченный разговор об искусстве и программировании...
-
warp
- Сообщения: 135
Re: класс работы с файлам(и)
Ошибаетесь. Посмотрите темки в Мультимедии на предмет извлечения тэгов и мануал Баша на предмет сортировки файлов.
в следующий раз буду изходить из того что баш умеет всё. xD
И мне не виднее, я Вам просто намекаю, что "что-то элементарное для изучения парадигмы" пишется в качестве упражнений в учебниках. И выполнение этих упражнений развивает в человеке интуицию применения ООП или отказа от использования ООП в пользу других средств.
хы - хы! ну очнь мне захотелосбь самому без учебника чтонибудь попробовать :}. а как вы считаете для каких целей применимо ООП?
за мировое господство! банзай, товарищи!
-
Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: класс работы с файлам(и)
Не надо из этого исходить. Надо из задачи исходить.
хы - хы! ну очнь мне захотелосбь самому без учебника чтонибудь попробовать :}. а как вы считаете для каких целей применимо ООП?
ООП применим в задачах, в которых существует четкая естесственная иерархия типов объектов. Там он оправдан и показывает свою истинную мощь. Также, есть области, где без него трудно обойтись из-за специфической архитектуры приложения.
Примером первого типа задач служит знаменитая программа рисования форм. Базисный класс shape наледуется классами circle, square, rectangle, triangle and what not, потом наследники перегружают метод "рисовать", а в программе Вы заводите массив указателей на shape и командуете им всем "рисуйся!" в одном цикле.
Примером второго класса задач может служить написание плагинов для уже имеющейся программы. Программист оставляет интерфейс, который может использоваться Вашим плагином. Вам, собственно, даже и не надо знать, как работает основная программа. Интерфейса достаточно для разработки плагина.
Все это написано в умных книжках, которые надо читать. И делать из них упражнения.
-
warp
- Сообщения: 135
Re: класс работы с файлам(и)
о_0 ! пасибки.
ps
это я про то, что не ожидал, что в консоле можно сделать такое.
ps
в следующий раз буду изходить из того что баш умеет всё. xD
Не надо из этого исходить. Надо из задачи исходить. smile.gif
это я про то, что не ожидал, что в консоле можно сделать такое.
за мировое господство! банзай, товарищи!