2011-05-11 3 views
0

J'utilise une méthode très complexe (pas écrit par moi) dans mon application Android, qui prend un « chemin » de paramètre de chaîne et puis ouvre et traite le fichier de ce chemin. Le problème est le suivant: Quand je tournerai le chemin vers un fichier sur mon sdcard (comme ceci: Environment.getExternalStorageDirectory() + «/myfile.txt »), il fonctionne très bien. Mais je ne veux pas que mon fichier soit disponible pour l'utilisateur, j'ai donc essayé de définir le chemin du dossier assets dans mon projet où j'ai copié le fichier, et en utilisant ce chemin, ça ne marchera pas. le fichier dans mon dossier actif wast ceci: fichier : ///android_asset/myfile.txt Alors, pourquoi le premier chemin fonctionne très bien et le second ne fait rien?chemin android à mon dossier

Merci

+0

Avez-vous accès (et droits) pour modifier le code de la "méthode très complexe" que vous utilisez? – TofferJ

Répondre

1

Vous devez utiliser AssetManager pour accéder aux fichiers dans le dossier actif.

+0

Pour aider à clarifier, c'est parce que le dossier actif dans votre projet d'application est le parc des archives .apk, et n'est pas un dossier séparé sur l'appareil ou l'émulateur lorsque l'application est installée, vous ne pouvez pas accéder à l'aide de fichier normal fonctions d'accès. – RivieraKid

+0

merci RivieraKid. logique – user347187

0

donc ce que je l'ai fait était le suivant: je l'ai écrit une méthode qui copie le fichier de l'actif dans le répertoire de données de mon application, puis envoyer cette voie à la « méthode très complexe ». Maintenant, ça fonctionne bien. Exemple de code (peut-être cela aidera d'autres à l'avenir).

/// ouvrir le fichier à partir du dossier actif

InputStream in = getAssets() open ("MonFichier.txt");

/// créant la sortie et l'emplacement qui lui

/// vous pouvez définir ne importe quel chemin vous aimez

(new File ("données/données/myAppPackageName/bases de données /")). mkdirs();

OutputStream out = new FileOutputStream ("data/data/myAppPackageName/bases de données/myfile.txt");

/// copie de méthode "dans" pour "sortir"

Chemin envoyé comme paramètre à la "méthode très complexe": "data/data/myAppPackageName/bases de données/myfile.txt"

Questions connexes