Io aspetterei a scrivere codice che potrebbe rilevarsi poco utile.
Come prima cosa vedo che vuoi utilizzare accesso tramite filesystem.
Nulla da ridire ma spero tu abbia considerato dei fattori specifici per arrivare a questa scelta piuttosto di affidarti ad un DBMS.

Mi spieghi gentilmente la logica del tuo applicativo?
Cosa deve fare il programma?

Io ti posso dire:
1. Ho (n) carte;
2. Pesco una carta da un determinato range e la memorizzo;
3. Il mazzo dal quale pesco le carte ora non deve più avere la carta che ho già pescato (quindi in qualche modo devi toglierla dal mazzo originario);

Perchè non utilizzi gli array per gestire le carte?
Hai ottime funzioni per gestire molteplici fattori.