Пишу файловый менеджер. Возникает вопрос: Каковы основные концепции разработки такой программы? Моё видение программы таково: сначала я описал структуру основных файловых операций в системе: Код (Text): public enum FileOperations { FO_LIST_DIRECTORY, //--------- Чтение каталога FO_TEXT_PREVIEW, //--------- Просмотр текстового файла FO_READ, //---------- Чтение FO_WRITE, //---------- Запись FO_PDF_PREVIEW, //---------- Просмотр PDF файла FO_DOWNLOAD, //---------- Скачивание FO_UPLOAD, //---------- Загрузка на сервер FO_HIDE, //---------- Скрытие FO_SHOW, //---------- Раскрытие FO_DELETE, //---------- Удаление FO_CREATE, //---------- Создание нового FO_RENAME, //---------- Переименование FO_COPY, //---------- Копирование FO_MOVE, //---------- Перемещение FO_CREATE_DIRECTORY,//-------- Создание каталога FO_CREATE_DIRS //--------- Создание множества каталогов } Затем создал интерфейс, который будет слушать, что пытаются сделать с файлом(FileOperationsListener) и принимает решение о допустимости операции. Операции я разделил на 3 вида: public void processSingleOperation (FileOperations FOS); Это однозначная операция (удаление, создание, получение размера etc...) public void processDoubleOperation (FileOperations FOS, Object param); Операция с параметром (перемещение, копирование, переименование, чтение etc...) public void processMixedOperation (FileOperations[] FOS, Object[] params); Неопределенная операция (просмотр, диагностика, etc...) Если я иду не в ту сторону, то поправьте. Также существует класс FileEntity, который позволяет собирать о файле любую информацию в том числе его mime-тип, права доступа, значок, категорию. Что делать дальше - не знаю... Какие еще функции добавить?
device присоединяюсь к ответу rei3er'а у тебя как-то все в кучу свалено. о символьных линках вообще ни слова каким боком тут появился pfd и upload/download мне вообще непонятно.... у тебя встроенный просмотрщик pdf будет? а ps уже не покажет? а граф. файлы? а html тоже не отрендерит? ты хочешь написать собственный манагер закачек, но... смысл? есть куча готовых и даже встроенных в браузеры. встроенный ftp-клиент как в FAR'е и MC - конечно, удобная штука, спору нет, но многие предпочитают юзать другие утилили... а если говорить кратко, то файловый менеджер должен поддерживать все операции над файлами, которые только поддеживает ось. как минимум. я не встретил у тебя просмотра атрибутов файла, изменение даты создания... это что же получается, если мне надо поменять атрибуты, я должен из твоего менеджера чмод вызывать?! так на фиг тогда он мне нужен такой... в принципе, можно просто переписать одну команду ls, сделав возможность перемещения курсора по списку файлов как это было сделано в ndos, и все очень рулило.
Это часть проекта. Есть сервер, который слушает команды от клиента. Этот сервер сидит в каталоге ./network компа. В том каталоге есть подкаталоги (./Маркетинг ./Бухгалтерия ./Финансисты) Команда list_divisions, например выдает список подразделений (читает каталог network) В каждом каталоге - фамилии сотрудников Команда List_Users - Выводит список сотрудников в данном подразделении Команда send_file - Отправляет файл к сотруднику, recv_file - Принимает Задача состоит в написании такого клиента, который бы был НЕ ХУЖЕ чем InternetExplorer или Konqueror. Сервер поддерживает любые операции с файлами, при желании можно добавить новые. Вот я и спрашиваю, как вообще это пишется? На данном этапе клиент ругается матом: Код (Text): NullPointerException Ошибка: Указатель ссылается на пустое место.
device а в чем трудность? если есть сервер, то он должен поддерживать определенный протокол передачи команд клиент будет транслировать пользовательские запросы в формат команд сервера
device > Задача состоит в написании такого клиента, > который бы был НЕ ХУЖЕ чем InternetExplorer или Konqueror. > Сервер поддерживает любые операции с файлами, > при желании можно добавить новые. > Вот я и спрашиваю, как вообще это пишется? никак это не пишется, а берется уже готовое. IE, например. ты пишешь http-proxy, который общаясь с сервером транслирует его ответы в html, чтобы юзер видел аля web-страничку, с разными элементами управления, посылающими ответы твоему http-proxy, который их транслирует в команды сервера. как-то я делал что-то очень отдаленно на это похожее... proxy, который позволяет работать с pop3/smtp протоколами через браузер. причем, абсолютно любой браузер, который нравится челу. вернее, я не совсем правильно выразился. это будет не http-proxy, это будет локальный web-сервер. т.е. в настройках браузера ничего прописывать не надо. просто набираешь в адресной строке адреса машины, где стоит этот сервер (соседний узел в локалке или твоя локальная машина) и все работает на все 100% еще как-то писал такую же штуку для управления dsl-модемом который управлялся только через telnet и клиент, его купивший был страшно недоволен, что нет web-интерфейса...
device гммм..... а нафиг строфать с нуля, если есть куча готовых решений, кои можно адаптировать, если функционала не хватает?????
Блин!!! Ищу подходящую стену чтоб убиться. То что изображено на скриншоте отлично работает в Linux. Я даже прогресс бар прикрутил, если оперируем с большими файлами. Та же прога в Windows вместо имен отделов и сотрудников выводит какие-то иероглифы. Какой казел кодировками балуется? У меня аж руки опустились когда увидел
А у меня еще вопрос: Можно ли соорудить такую структуру данных, типа бутылки? Ну, например, у нас есть файл очень большого размера. Его нужно передать на сервер. Возьмем буфер в n байт с пределом P и будем читать этот файл, заполняя структуру: data[n] | | | V data1[n++] | | | V data2... и так, пока не достигнем P, P+=n Чтобы потом извлечь, начиная с data2 ----->data[n]. Похоже на содержимое бутылки. Влили в определенном порядке - вылили наоборот. Но тут возникает другой вопрос: как определить, что последовательность байт в буфере до вталкивания такая же как и после? Подозреваю, что можно привязать к последовательности дополнительные данные, но вот только как и какие...?
Добавил функционал: При попытке копирования каталога выдается сообщение: Это каталог. Создать из него архив?
Почему при передаче файла с русским именем (русские буквы в имени), размер конечного файла - 0 байт, а если буквы латинские - то все нормально, хотя конечный файл тоже по-русски назван.