Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт окт 17, 2017 6:12 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 30 сообщений ]  На страницу 1 2 След.
Автор Сообщение
 Заголовок сообщения: File System Library (FSL)
СообщениеДобавлено: Чт ноя 05, 2015 4:02 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Библиотека позволяет выполнять такие операции как:

  • Чтение данных (ф-ция
    Код:
    fs.read(path)
    читает файл path и выделяет под размер этого файла область памяти, в регистре ECX содержится размер самого файла. Чтобы освободить память, достаточно вызвать free указав адрес области памяти.)

  • Удаление (ф-ция
    Код:
    fs.remove(path)
    рекурсивно удаляет все элементы входящую директорию path и так же удаляет её)

  • Копирование (ф-ция
    Код:
    fs.copy(path1,path2)
    осуществляет рекурсивное копирование из path1 в path2)

  • Перемещение (ф-ция
    Код:
    fs.move(path1,path2)
    осуществляет рекурсивное перемещение из path1 в path2, в случае ошибки приостанавливается, те файлы которые не перенесли остаются в сохранности)

  • Получить размер файла/папки (ф-ция
    Код:
    fs.get_size(path)
    осуществляет рекурсивное получение путем суммирования размеров файлов. Так же регистр ECX содержит кол-во папок, а EDX - файлов.)

  • Создание папки (ф-ция
    Код:
    fs.make_dir(path)
    )

  • Переименование файла/папки (ф-ция
    Код:
    fs.rename(path,new_name)
    осуществляет переименование файла/папки имени в пути path на новое new_name, в случае ошибки приостанавливается, те файлы которые не перенесли остаются в сохранности, взаимодействует с ф-цией fs.move)

  • Получить кол-во файлов и папок в определенной директории (ф-ция
    Код:
    fs.get_entries_count(path)
    возвращает кол-во файлов и папок в директории path, стоит отметить, возвращается только реальное кол-во без ./ и ../!)

  • Получить указатель на блок файлов папки (ф-ция
    Код:
    fs.get_dir_info(path)
    возвращает блок данных)
Отдельно идет еще ф-ция fs.get_full_path(path), она преобразует путь в стандартный Windows формат определения пути.
Например:
Код:
char *path = fs.get_full_path("file.txt");

то переменная path будет
Код:
/путь к директории от куда запущен файл/file.txt

Если
Код:
char *path = fs.get_full_path("/file.txt");

То
Код:
/sys/file.txt


Все ф-ции описанные выше взаимодействуют с функцией fs.get_full_path, это сделано ради удобства.


Вложения:
fs.obj [4.35 КБ]
21 скачивание


Последний раз редактировалось pavelyakov Пт ноя 13, 2015 2:23 pm, всего редактировалось 12 раз.
Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Чт ноя 05, 2015 4:34 pm 
Не в сети

Зарегистрирован: Вс авг 09, 2015 3:41 pm
Сообщения: 82
Это по какой конвенции наименования для функции используется идентификатор в верхнем регистре? Переименование надо делать на уровне драйверов ФС.


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Чт ноя 05, 2015 4:50 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Ray писал(а):
Это по какой конвенции наименования для функции используется идентификатор в верхнем регистре? Переименование надо делать на уровне драйверов ФС.

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


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Чт ноя 05, 2015 6:08 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1185
Библиотека для файловых менеджеров? Планируешь перевести на неё Eolite?


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Чт ноя 05, 2015 6:24 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Pathoswithin писал(а):
Библиотека для файловых менеджеров? Планируешь перевести на неё Eolite?

Так точно.


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Чт ноя 05, 2015 6:40 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Сделал еще проще, теперь названия все через точку и в низ. регистре. Это дает возможность меньше запутаться.


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Чт ноя 05, 2015 8:25 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Сб окт 05, 2013 9:32 pm
Сообщения: 385
Нужно сразу выбрать, использовать сокращения или полные названия (или mv и mkdir, или move и make_dir).

pavelyakov писал(а):
надо сейчас нормальные названия придумать, так как после буду присоединять с файловыми менеджерами

fs.delete можно переименовать в fs.remove. Так же думаю стоит добавить второй аргумент, который будет отвечать, стоит ли удалять это, если это директория (аналог ключа --force). И можно сделать обертку remove_dir, которая вызывает remove, у которого второй аргумент true.
fs.cut -> fs.move
fs.size -> fs.get_size
fs.mkdir -> fs.make_dir
fs.dir.load -> fs.get_dir_info
fs.dir.count -> fs.get_entries_count(dir_info)
fs.get.path -> fs.get_full_path
fs.rename - я не особо понимаю, чем он отличается от fs.cut/fs.move.
fs.dir.count и fs.dir.load - как по мне, лучше сделать так, чтобы fs.dir.load возвращал структуру (или в качестве аргумента лучше давать указатель на структуру), а уже методы для работы с этой структурой (например count) лучше применять сразу к структуре, чтобы было меньше лишних вызовов.
Код:
string path = "..";
DirInfo* dir = new DirInfo;
fs.get_dir_info(dir, path);
printf("There are %d files in %s", fs.get_entries_count(dir), fs.get_full_path(path));


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Чт ноя 05, 2015 8:45 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
e-andrew писал(а):
Нужно сразу выбрать, использовать сокращения или полные названия (или mv и mkdir, или move и make_dir).

pavelyakov писал(а):
надо сейчас нормальные названия придумать, так как после буду присоединять с файловыми менеджерами

fs.delete можно переименовать в fs.remove. Так же думаю стоит добавить второй аргумент, который будет отвечать, стоит ли удалять это, если это директория (аналог ключа --force). И можно сделать обертку remove_dir, которая вызывает remove, у которого второй аргумент true.
fs.cut -> fs.move
fs.size -> fs.get_size
fs.mkdir -> fs.make_dir
fs.dir.load -> fs.get_dir_info
fs.dir.count -> fs.get_entries_count(dir_info)
fs.get.path -> fs.get_full_path
fs.rename - я не особо понимаю, чем он отличается от fs.cut/fs.move.
fs.dir.count и fs.dir.load - как по мне, лучше сделать так, чтобы fs.dir.load возвращал структуру (или в качестве аргумента лучше давать указатель на структуру), а уже методы для работы с этой структурой (например count) лучше применять сразу к структуре, чтобы было меньше лишних вызовов.
Код:
string path = "..";
DirInfo* dir = new DirInfo;
fs.get_dir_info(dir, path);
printf("There are %d files in %s", fs.get_entries_count(dir), fs.get_full_path(path));

Отлично. Теперь более понятнее. На счет структуры подумаю как лучше сделать.


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Пт ноя 06, 2015 9:40 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Сб окт 05, 2013 9:32 pm
Сообщения: 385
Почему ты не хочешь открыть исходники?


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Пт ноя 06, 2015 9:54 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
e-andrew писал(а):
Почему ты не хочешь открыть исходники?

они слишком специфичные xD


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Сб ноя 07, 2015 10:03 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1076
а вызов callback функции в копировании и перемещении есть? Нужно для прогрессбара.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Сб ноя 07, 2015 10:56 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
punk_joker писал(а):
а вызов callback функции в копировании и перемещении есть? Нужно для прогрессбара.

Как раз об этом и думаю сделать.


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Вс ноя 08, 2015 6:15 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1076
По поводу fs.get_entries_count, она возвращает количисве файлов, или файлов и директорий?

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Вс ноя 08, 2015 6:47 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
punk_joker писал(а):
По поводу fs.get_entries_count, она возвращает количисве файлов, или файлов и директорий?

файлов и директорий в определенной папке


Вернуться к началу
 Заголовок сообщения: Re: File System Library (FSL)
СообщениеДобавлено: Вс ноя 08, 2015 6:56 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1076
Можешь добавить для нее параметры? Чтобв считало количество файлов и директорий, только директории, и только файлы?

_________________
я лишь учусь


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 30 сообщений ]  На страницу 1 2 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB