Запись файла на SDCard

Я пытаюсь написать файл из ответа на сообщение Http в файл на SD-карте . Все работает нормально, пока массив байтов данных не будет восстановлен.

Я попытался установить разрешение WRITE_EXTERNAL_STORAGE в манифесте и попробовал множество различных комбинаций обучающих программ, которые я нашел в сети.

Все, что я мог найти, это использовать метод openFileOutput("",MODE_WORLD_READABLE) , но как мое приложение записывает файл с помощью потока. В частности, поток вызывается из другого потока, когда файл должен быть написан, поэтому предоставление объекта активности не работает, хотя я его попробовал.

Приложение прошло долгий путь, и я не могу изменить способ написания приложения.

Пожалуйста, кто-нибудь мне поможет?


КОД :

 File file = new File(bgdmanip.savLocation); FileOutputStream filecon = null; filecon = new FileOutputStream(file); byte[] myByte; myByte = Base64Coder.decode(seReply); bos.write(myByte); filecon.write(myByte); myvals = x * 11024; 

bgdmanip.savLocation содержит весь путь к файлам. seReply – строковый ответ от ответа HttpPost . Второй набор кода зацикливается со ссылкой на x . Файл создается, но остается 0 байтов.

Метод openFileOutput() записывает данные в область личных данных вашего приложения (а не SD-карту), поэтому, вероятно, это не то, что вы хотите. Вы должны иметь возможность вызвать Environment.getExternalStorageDirectory() чтобы получить корневой путь к SD-карте и использовать его для создания FileOutputStream . Оттуда просто используйте стандартные java.io-процедуры.

 //------------------------------WRITING DATA TO THE FILE --------------------------------- btnWriteSDFile.setOnClickListener(new OnClickListener() { public void onClick(View v) { try { File myFile = new File("/sdcard/mysdfile.txt"); myFile.createNewFile(); FileOutputStream fOut = new FileOutputStream(myFile); OutputStreamWriter myOutWriter =new OutputStreamWriter(fOut); myOutWriter.append(txtData.getText()); myOutWriter.close(); fOut.close(); Toast.makeText(v.getContext(),"Done writing SD 'mysdfile.txt'", Toast.LENGTH_SHORT).show(); txtData.setText(""); } catch (Exception e) { Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show(); } } }); //---------------------------READING DATA FROM THE FILE PLACED IN SDCARD-------------------// btnReadSDFile.setOnClickListener(new OnClickListener() { public void onClick(View v) { try { File myFile = new File("/sdcard/mysdfile.txt"); FileInputStream fIn = new FileInputStream(myFile); BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn)); String aDataRow = ""; String aBuffer = ""; while ((aDataRow = myReader.readLine()) != null) { aBuffer += aDataRow ; } txtData.setText(aBuffer); myReader.close(); Toast.makeText(v.getContext(),"Done reading SD 'mysdfile.txt'",Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show(); } } }); 

В дополнение к этому ТАКЖЕ НАПИСАТЬ НАСТОЯЩЕЕ РАЗРЕШЕНИЕ В Android.Manifest

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Вот пример:

 // Log used as debug File log = new File(Environment.getExternalStorageDirectory(), "Log.txt"); try { out = new BufferedWriter(new FileWriter(log.getAbsolutePath(), false)); out.write(new Date().toString()); out.write(" : \n"); } catch (Exception e) { Log.e(TAG, "Error opening Log.", e); } 
Intereting Posts
Поручите скрипт Android Gradle удалить неприглаженные апки и очистить файлы артефакта Android – NestedScrollView, который содержит ExpandableListView, не прокручивается при расширении Android – вам когда-либо приходилось добавлять фрагменты в манифест CSS: зависание /: фокус против события click on (мобильные) сенсорные устройства Использование Google Guava с Android 1.6 Как передать данные из веб-браузера обратно в собственное приложение для Android Предложение SearchView не работает с одним символом Меню Android: две однонаправленные группы в одном меню В чем отличие entry.softTtl и entry.ttl в залпе? Меню параметров – удаление фокуса с элемента Android AccountKit.getCurrentAccount возвращает «API-вызовы с сервера требуют аргумента appsecret_proof» Как вызвать действие, когда пользователь нажал кнопку ввода? Android Studio preDexDebug после добавления файла jar Как заставить Android установить приложение во внутреннюю память Java.lang.NullPointerException для градиента проекта студии android