2010-03-31 8 views
0

J'essaie d'enregistrer un fichier dans un sous-répertoire dans Android 1.5. Je peux créer avec succès un répertoire à l'aideÉcrire un fichier dans un sous-répertoire dans Android

_context.GetFileStreamPath("foo").mkdir(); 

(_context est l'activité où je commence l'exécution de l'enregistrement du fichier) mais si je tente de créer un fichier dans foo/par

_context.GetFileStreamPath("foo/bar.txt"); 

Je reçois une exception disant que je ne peux pas avoir de séparateur de répertoire dans un nom de fichier ("/").

Il me manque quelque chose de travailler avec des fichiers sous Android ... Je pensais pouvoir utiliser les classes Java standard, mais ils ne semblent pas fonctionner ... J'ai cherché dans la documentation Android, mais je ne pouvais pas bien exemple et Google ne me aide aussi ...

Je pose la mauvaise question (Google) ...

Pouvez-vous me aider avec ça?

Merci!

Répondre

3

J'ai compris ce qui me manquait. Java Classes de fichiers fonctionne très bien, il vous suffit de passer le chemin absolu où vous pouvez réellement écrire des fichiers.

Pour obtenir ce répertoire "racine", j'ai utilisé _context.getFilesDir(). Cela vous donnera la racine de votre application. Avec cela, je peux créer un fichier avec new File(root + "myFileName") ou comme Sean Owen a dit new File(rootDirectory, "myFileName").

2

Utilisez getDir() pour obtenir un contrôle sur le répertoire "foo" en tant qu'objet File, et créez quelque chose comme new File(fooDir, "bar.txt") à partir de celui-ci.

3

Vous ne pouvez pas utiliser directement le chemin, mais vous devez créer un objet fichier à propos de chaque répertoire. Je ne comprends pas pourquoi, mais c'est ainsi que ça fonctionne.

NOTE: Ce code rend les répertoires, le vôtre peut pas besoin que ...

File file = context.getFilesDir(); 
file.mkdir(); 

String[] array = filePath.split("/"); 
for (int t = 0; t < array.length - 1; t++) { 
    file = new File(file, array[t]); 
    file.mkdir(); 
} 

File f = new File(file, array[array.length - 1]); 

RandomAccessFileOutputStream rvalue = new RandomAccessFileOutputStream(f, append);