2010-12-01 5 views
1

Я пытаюсь записать файл на свою SD-карту в своем телефоне HTC Hero. Я создаю файл в своей SD-карте, используя:Запись на SDCard проблема - Android

Файл = новый файл (path.getAbsolutePath(), "Filename.txt");

где путь это путь к моей externalStorageDirectory (т.е. \ SDCard)

Когда я вхожу путь этого файла, он сказал \ SDCard \ filename.txt

Однако, когда я создаю FileOutputStream для записи в файл, вдруг путь к файлу изменяется на \ data \ data, и я не могу получить к нему доступ.

Может кто-то, пожалуйста, пояснить, как я могу создать файл в SDCard, а затем написать ему?

Спасибо!

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(); 
    } 

Это то, что я делаю. Часть до SDCARDPLSWORK верна, но когда дело доходит до журнала FILEANDROID, она переходит в личное хранилище данных.

ответ

0

Использование Environment.getExternalStorageDirectory() для карты SD-карты.

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

пути = Environment.getExternalStorageDirectory(); Log.d («SDCARDPLSWORK», path.toString()); try { \t myFile = новый файл (путь.getAbsolutePath(), "SensorValues.txt"); \t boolean i = myFile.createNewFile(); \t Log.d ("SDCARDPLSWORK", myFile.toString() + "" + i); \t fos = new FileOutputStream (myFile); \t Log.d ("FILEANDROID", myFile.getAbsolutePath()); } catch (FileNotFoundException e) { \t e.printStackTrace(); – Imelza 2010-12-01 08:18:48

+0

извините, что я делаю, думаю, но не работает. – Imelza 2010-12-01 08:22:34

0

Environment.getExternalStorageDirectory() получит корневую папку sdcard.

@JAVADOC

Приложение не должно напрямую использовать этого каталог верхнего уровня, для того, чтобы не загрязнять корневой имен пользователя. Любые файлы, которые являются приватными к приложению, должны быть помещены в каталог, возвращенный Context.getExternalFilesDir, который система позаботится об удалении, если приложение будет удалено. Другие общие файлы должны быть размещены в одном из каталогов, возвращаемых getExternalStoragePublicDirectory (String).

/данные/данные/... это место используется для хранения файлов для пакета, поэтому попробуйте коды ниже:

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(); 
} 
Смежные вопросы