2013-11-15 4 views
0

Пожалуйста, посмотрите на следующий кодНевозможно записать внутреннего хранения

File folder = new File("/Main Note/Sub Notes/"+dateStr+"/"); 
File file = new File(folder+name.getText().toString()+".txt"); 
    try 
    { 

     if(!folder.exists()) 
     { 
      folder.mkdirs(); 
     } 

     FileOutputStream outputStream = openFileOutput(file.getName(),Context.MODE_WORLD_WRITEABLE); 
     outputStream.write(spokenText.getBytes()); 
     outputStream.flush(); 
     outputStream.close(); 

     Toast.makeText(VoiceNotes.this, "Data Successfully written to: "+file.getAbsolutePath(), Toast.LENGTH_LONG).show(); 
    } 
    catch(IOException io) 
    { 
     Toast.makeText(VoiceNotes.this, "Error in Writing to SD", Toast.LENGTH_LONG).show(); 
    } 

Здесь я пытаюсь записать данные во внутреннюю память. Это не имеет ошибок, отображает, что данные были успешно записаны.

Но когда я перехожу к внутреннему SD в телефоне, я не вижу никакой папки или файла, который он создал! Наверное, я сделал что-то не так, это первый раз, когда я пишу во внутреннее хранилище в Android.

+0

Вы дали необходимые разрешения в своем манифесте? –

+0

@contactmeandroid: какое разрешение? –

+0

@Artificial_Intelligence Мб <использует-разрешение андроида: имя = "android.permission.WRITE_SETTINGS" /> – Suvitruf

ответ

1
File folder = new File(context.getFilesDir(),"/MyFolder/"); 

Файлы будут созданы в "/data/data/app.package/files/...". Но вы можете видеть их только в том случае, если устройство было внедрено

+0

ОК. Но приложения, подобные Yahoo, напрямую записываются во внутреннюю память, и я могу видеть их из проводника. –

+2

@Artificial_Intelligence Я думаю, это плохое поведение для записи данных в общую папку. Приложение должно хранить данные в своем собственном внутреннем хранилище. – Suvitruf

+0

Во многих случаях да. Но скажите, что у вас есть приложение для камеры - вы захотите сохранить на SD-карту, не так ли? – blalasaadri

1

Вы хотите получить доступ к пути, возвращаемому getExternalStorageDirectory(), как описано here.

+0

это для внутренних, а не внешних –

+0

Правда, но, к сожалению, он не стандартизирован среди устройств Android, какая SD-карта является внутренней и внешней. Вы получите один из них, но который зависит от вашего устройства. Если вы хотите получить доступ к внутреннему в любом случае, возможно, этот вопрос поможет вам: http://stackoverflow.com/questions/17203615/why-is-this-code-incorrectly-reporting-free-space-on-my -android-устройство – blalasaadri

Смежные вопросы