Question: Comment faites-vous la distinction entre les répertoires et les fichiers ordinaires dans le dossier des ressources par programmation? Lorsque vous utilisez AssetManager pour accéder à des fichiers dans le dossier assets, il semble impossible de déterminer si un fichier est en fait un fichier ou un répertoire. Vous obtenez la liste des fichiers de la méthode list
, puis ouvrez le fichier en utilisant la méthode open
. Je pensais que peut-être en utilisant la méthode openFd
pour obtenir le descripteur de fichier d'actifs (et ensuite demander le descripteur de fichier normal) me fournirait quelques informations. Mais demander le descripteur de fichier pour un répertoire entraîne une IOException (ce qui est logique car qu'est-ce que cela signifie pour un répertoire d'avoir un descripteur de fichier ...?).Détermination du type de fichier dans le dossier des ressources
Actuellement, je m'appuie sur cette exception IOException (résultant de la tentative d'ouverture d'un répertoire dans le dossier assets) afin de déterminer si un fichier est en fait un répertoire. (Ouvrir un fichier normal fonctionne très bien). Cela semble être une mauvaise idée. D'autres suggestions pour faire la distinction entre un fichier et un répertoire?
Comment organisez-vous vos fichiers dans le répertoire des ressources? Ne pouvez-vous pas conserver les fichiers séparés des dossiers au lieu de tout mélanger? –
D'accord. C'est vous qui mettez le contenu du répertoire 'assets /'. Par conséquent, vous ne devriez pas avoir à deviner ce qui est et ce n'est pas un répertoire. – CommonsWare
Peu importe comment vous placez vos fichiers dans le dossier 'assets /', ce problème existe. La méthode 'list' renvoie un tableau' String [] 'de tous les fichiers et répertoires situés dans le chemin de répertoire demandé (par exemple' image.jpg', 'music.mp3',' Tools'). Si vous voulez avoir une sorte de structure de répertoire à l'intérieur de 'assets /', vous rencontrerez ce problème. – ChaimKut