2012-12-02 11 views
6

Potrzebuję lekkiej, wieloplatformowej biblioteki systemów plików do tworzenia gier. Chcę wysyłać moje gry w systemach Windows, Linux i Mac.Czy istnieje lekka biblioteka systemów plików C++?

O ile mi wiadomo, korzystanie z dirent.h działa na wszystkich trzech platformach. Jednak chciałem wiedzieć, czy istnieje biblioteka, która jest prostsza w użyciu - używanie bezpośrednio dirent było dla mnie kłopotliwe i nigdzie się nie dostałem.

Próbowałem też Boost, ale nie podoba mi się to, że nie jest lekki i sprawiał mi kłopoty z portami Unix w mojej grze.

Cechy wymagam to:

  • Rekursywnie czytaj drzewa katalogów
  • Pobierz wszystkie pliki w katalogu
  • uzyskać wszystkie podkatalogi w katalogu
+0

Pytasz o bibliotece, która zapewnia łatwiejszy dostęp do istniejącego systemu plików czy o biblioteki, który implementuje system plików (kontener)? –

+0

@ EugeneMayevski'EldoSCorp Pytam o bibliotekę, która pomaga mi uzyskać istniejące katalogi/pliki na dysku twardym. Na przykład chcę uzyskać wszystkie pliki .png w "C:/MyGame/Data/Images" bez większego problemu. –

+0

Czy sprawdziłeś swoje GUI framework (piszesz grę, prawda?)? Czasami zawierają one dodatkowe elementy, takie jak api systemu plików. –

Odpowiedz

0

ja tworzę własna biblioteka systemu plików (testowana w systemach Windows i Linux, zarówno z GCC, jak i Clang).

Można go znaleźć w bibliotece SSVUtils: https://github.com/SuperV1234/SSVUtils

SSVUtils nie ma zależności zewnętrzne.

Przykład użycia:

log("Getting all page.json files", "loadPages"); 

string pagesPath("Json/Pages/"); 
vector<string> pageJsonPaths{getScan<Mode::Recurse, Type::File, Pick::ByName>(pagesPath, "page.json")};