Проблема с записью на SDCARD в Android?

При реализации функции загрузки она работает, но при сохранении файла на SD-карту я получаю следующее

Размер буфера по умолчанию, используемый в конструкторе BufferedInputStream. Было бы лучше указать явно, если требуется буфер 8k.

Также возникает исключение ввода-вывода

W(14495:0x389f) java.io.FileNotFoundException: /sdcard W(14495:0x389f) в org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244) W(14495:0x389f) в java. io.FileOutputStream.(FileOutputStream.java:97) W(14495:0x389f) в java.io.FileOutputStream.(FileOutputStream.java:168) W(14495:0x389f) в java.io.FileOutputStream.(FileOutputStream.java:147 )


person Ahmed Salem    schedule 08.07.2010    source источник
comment
Мне нравится, как в этом вопросе сначала ставится предупреждение, как если бы оно было самым важным, а затем добавляется исключение как запоздалая мысль.   -  person Anon.    schedule 09.07.2010
comment
я вижу, вы должны прокомментировать, если вы можете помочь или посоветовать   -  person Ahmed Salem    schedule 09.07.2010


Ответы (1)


Сначала убедитесь, что вы получили объект File, вызвав

File dir = Environment.getExternalStorageDirectory();

Также, если ваше приложение использует 1.6+, вам понадобится WRITE_EXTERNAL_STORAGE разрешение. Если не поможет, опубликуйте код.

person Robby Pond    schedule 08.07.2010
comment
Я использую поток BufferedInput BufferedInputStream bis = new BufferedInputStream(objectComplete.getDataInputStream()); BufferedOutputStream bos = новый BufferedOutputStream (новый FileOutputStream (/sdcard)); инт я; в то время как ((i = bis.read()) != -1) { bos.write(i); System.out.println (запись файла); } System.out.println(Приветствие:); также я установил разрешение на запись на SD-карту ‹использует-разрешение android:name=android.permission.WRITE_EXTERNAL_STORAGE /› - person Ahmed Salem; 09.07.2010
comment
@Ahmed Salem: Пожалуйста, прочитайте ответ, который вам дали. Он не соответствует вашему коду. Ваш код запрограммирован "/sdcard". Это не допустимый путь на всех устройствах Android. Вы заметите, что ответ BrennaSoft не использует "/sdcard", а использует Environment.getExternalStorageDirectory(). Измените свой код, чтобы использовать Environment.getExternalStorageDirectory(), и вам может повезти. - person CommonsWare; 09.07.2010
comment
@CommonsWaree у меня есть код изменения, но все еще есть исключение java.io.FileNotFoundException: /sdcard - person Ahmed Salem; 09.07.2010