спрашивать здесь, исключительно из -за беспокойства по поводу безопасности, практичности и переносимости; Мнения приветствуются, но второстепенные.
В течение некоторого времени я работал с определением независимого от платформы слоя абстракции ввода/вывода файла с использованием std :: fileystem . Не описывая слишком много, я изложу общие идеи дизайна ad Vorbatim: < /p>
namespace fileio
{
// Opaque handles
struct Directory;
struct File;
struct FileModeFlag
{
enum flags : unsigned int {
read = 0x0001u,
write = 0x0002u,
trunc = 0x0004u,
append = 0x0008u,
binary = 0x0010u };
};
using FileModeFlags = unsigned int;
// examples of directory functions
Directory* directory_open(std::string_view dir);
Directory* subdirectory_open(const Directory* dir, std::string_view subdir);
Directory* subdirectory_open(const Directory* dir, std::string_view subdir1, std::string_view subdir2);
void directory_close(Directory* dir);
std::string_view directory_get_path(const Directory* dir);
std::string directory_get_path(const Directory* dir, std::string_view filename);
// examples of file functions
bool file_exists(const Directory* dir, std::string_view filename);
File* file_open(const Directory* dir, std::string_view filename, FileModeFlag flags);
}
< /code>
Реализация следует за этой общей идеей: < /p>
struct Directory
{
uint64_t id;
fs::path handle;
};
struct File
{
uint64_t id;
uint64_t size;
std::fstream handle;
// TODO: Store a filename? `std::string filename;`, which is _not_ the entire path!
};
< /code>
Эта идея реализована в моей библиотеке Vtek с открытым исходным кодом. Я знаю, что это работает, мне нравится использовать его, но я не уверен, что это хорошая идея . Возможно, откройте каталог, а затем добавьте в него файлы в цикл предсказуемым образом. Все при скрытии сепаратора платформы за интерфейсом каталога безопасного в использовании. Я не уверен, как решить это лучше всего, или, если это причина, по которой большинство кодов ввода -вывода файла, как правило, просто использует (полностью квалифицированные) пути файлов.
Спасибо за любую информацию!
Подробнее здесь: https://stackoverflow.com/questions/797 ... -like-this
Хорошей идеей создать интерфейс ввода -вывода ввода -вывода? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Хорошей идеей использовать разделы вместо модуля для скрытия деталей реализации?
Anonymous » » в форуме C++ - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Хорошей идеей использовать разделы вместо модуля для скрытия деталей реализации?
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-