2010-06-09 4 views
2

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?

+2

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? –

+1

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

+0

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

Répondre

1

Je suis d'accord avec les commentaires sur votre publication. Mais pour répondre à votre question, faire un objet fichier pointé dans le répertoire des actifs File root = new File("path/to/directory");

Ensuite, vous pouvez extraire tous les fichiers sous et répertoires comme celui-ci File[] files = root.listFiles();

Une fois que vous avez la liste, vous pouvez déterminer ce qui est ce que en utilisant File.isDirectory().

En ce qui concerne la détermination des types de fichiers, c'est aussi simple que d'utiliser String.subString() pour saisir le caractère suivant la dernière période.

espérons que cela aide

Questions connexes