Pliki
W języku Scala istnieje sposób na to żeby wyświetlić listę plików. Mowa tu o metodzie list().
Nie ma jednak za bardzo metod które wyświetlałyby wszystkie pliki w katalogu, czyli w folderze głównym oraz
wszystkich podfolderach. W języku C++ z tego co kojarzę istnieje taka metoda, no ale ja chciałem skorzystać
z takiego rozwiązania na poziomie języka Scala. Postanowiłem więc, że sam napiszę taką metodę i co ciekawe,
udało mi się. Nie jest to jednak tak proste zadanie jakby to mogło się wydawać. Założyłem sobie tak, że
program w prosty sposób pobierze wszystkie pliki i foldery z folderu głównego i tak też się stało. Nie pobrał
jednak plików z podfolderów i tutaj trza się nagimnastykować. Założyłem więc tak, że trzeba sprawdzić czy folder
był otwarty. Utworzyłem więc nowy typ który przechowuje wartość ścieżki oraz flagę czy był już otwarty czy nie.
Dla plików ustawiłem tą flagę że no dobra, plik był otwarty, żeby program nie traktował go jako folder i nie chciał
go listować. No to mam flagę tak, że folder nie jest otwarty. No dobra skoro nie jest, nie był to go listuję czyli
przeczesuję wszystkie pliki w nim.
Przeczesałem to zapisuję jego flagę że już go otworzyłem no i fajnie, do niego już nie wracam, ewentualnie do podfolderów, których jeszcze nie otwierałem. Jest też mała zagwostka czyli za każdym razem pobierałem sobie pliki do listy tak, no ale za każdym razem miałem całkiem inne pliki, a ja chciałem mieć pliki te co miałem i nowe które już pobrałem sobie. Wyjściem z tej sytuacji było łączenie list czyli pobieram coś, łączę z główną listą wszystkich katalogów, znowu pobieram, znowu łączę. I tak robię aż licznik tych flag co jeszcze ich nie otworzyłem będzie równy 0 czyli aż otworzę wszystkie foldery. W sensie program, nie ja. No i działa. Jest to przydatne jak chcę mieć wiedzę na temat wszystkich plików, folderów w danym folderze. Czyli przypuśćmy że wyszukuję jakiś plik to go sobie tak właśnie mogę wygodnie wyszukać. Wyszukiwarki systemowe po prostu nie działają jak powinny. Można się łączyć przez terminal, ale to rozwiązanie jest dużo lepsze.