2010-12-01 10 views
1

J'essaye d'écrire un fichier sur ma carte SD dans mon téléphone HTC Hero. Je crée le fichier dans ma carte SD en utilisant:Écriture sur SDCard Problème - Android

File = new Fichier (path.getAbsolutePath(), "Filename.txt");

où chemin est le chemin vers mon externalStorageDirectory (ie \ sdcard)

Lorsque je me connecte le chemin de ce fichier, il ne dit \ sdcard \ filename.txt

Cependant, lorsque je crée un FileOutputStream pour écrire dans le fichier, le chemin du fichier est changé en \ data \ data et je ne peux pas y accéder. Est-ce que quelqu'un peut m'aider à clarifier comment je peux créer un fichier dans la carte SD, puis y écrire?

Merci!

Edit:

path = Environment.getExternalStorageDirectory(); 
Log.d("SDCARDPLSWORK", path.toString()); 
    try 
    { 
     myFile = new File(path.getAbsolutePath(), "SensorValues.txt"); 
     boolean i = myFile.createNewFile(); 
     Log.d("SDCARDPLSWORK", myFile.toString() + " " + i); 
     fos = new FileOutputStream(myFile); 
     Log.d("FILEANDROID", getFileStreamPath("SensorValues.txt").toString()); 
    } 

    catch(FileNotFoundException e) 
    { 
     e.printStackTrace(); 
    } 

C'est ce que je fais. La partie jusqu'à SDCARDPLSWORK est correcte, mais quand il s'agit du journal FILEANDROID, il va au stockage de données privé.

Répondre

0

getFileStreamPath(..) lit à partir du répertoire local. Votre code de débogage est incorrect.

+0

Ohh ... Je pensais que getFileStreamPath obtient juste le chemin d'un fichier .. cela fonctionne maintenant .. merci beaucoup! :) – Imelza

0

Utilisez Environment.getExternalStorageDirectory() pour le chemin de la carte SD.

Environment.getExternalStorageDirectory()+"/yourFilename.png" 
+0

path = Environment.getExternalStorageDirectory(); Log.d ("SDCARDPLSWORK", path.toString()); try { \t myFile = nouveau fichier (path.getAbsolutePath(), "SensorValues.txt"); \t booléen i = monFichier.createNewFile(); \t Log.d ("SDCARDPLSWORK", myFile.toString() + "" + i); \t fos = nouveau FileOutputStream (monFichier); \t Log.d ("FILEANDROID", myFichier.getAbsolutePath()); Capture (FileNotFoundException e) { \t e.printStackTrace(); – Imelza

+0

désolé c'est ce que je fais, je pense, mais ça ne fonctionne pas. – Imelza

+0

Je préfère utiliser Environment.getExternalStorageDirectory() + File.pathSeparator + "yourFilename.png" ou fichier final File = new Fichier (Environment.getExternalStorageDirectory(), "yourFilename.png"); –

0

Environment.getExternalStorageDirectory() obtiendra le dossier racine de sdcard.

@JAVADOC

applications ne doivent pas utiliser directement ce répertoire de haut niveau, afin d'éviter de polluer racine namespace de l'utilisateur. Tous les fichiers qui sont privés à l'application doivent être placés dans un répertoire retourné par Context.getExternalFilesDir, dont le système prendra soin de supprimer si l'application est désinstallée. Autres fichiers partagés doivent être placés dans un des répertoires retournés par getExternalStoragePublicDirectory (String).

/data/data/... cet endroit est utilisé pour stocker des fichiers pour votre paquet, alors essayez les codes ci-dessous:

File path = getApplicationContext().getFilesDir(); // get your private folder 
Log.d("SDCARDPLSWORK", path.toString()); 
File myFile; 
FileOutputStream fos; 
try { 
    myFile = new File(path.getAbsolutePath(), 
      "SensorValues.txt"); 
    boolean i = myFile.createNewFile(); 
    Log.d("SDCARDPLSWORK", myFile.toString() + " " + i); 
    fos = new FileOutputStream(myFile); 
    Log.d("FILEANDROID", getFileStreamPath("SensorValues.txt") 
      .toString()); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Questions connexes