Сохранение на SD-карту в виде текстового файла

stopWriting = (Button) findViewById(R.id.save); stopWriting.setOnClickListener(new OnClickListener() { @SuppressLint("SdCardPath") public void onClick(View v) { // stop recording the sensor data try { myFile = new File("/sdcard/SensorData/" + txtData.getText() + ".txt"); myFile.createNewFile(); sData = new FileOutputStream(myFile); myOutWriter = new OutputStreamWriter(sData); myBufferedWriter = new BufferedWriter(myOutWriter); myPrintWriter = new PrintWriter(myBufferedWriter); //if(myFile != null )//stopFlag = mSensorManager.cancelTriggerSensor(null, null); Toast.makeText(getBaseContext(), "Done", Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); } } }); 

Я пытаюсь сохранить данные гироскопа в txt-файле, но он не сохраняется. Если кто-нибудь найдет проблему, пожалуйста, помогите мне исправить ее.

Solutions Collecting From Web of "Сохранение на SD-карту в виде текстового файла"

Попробуйте этот код для меня.

 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(getBaseContext(), "Done writing SD 'mysdfile.txt'", Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); } 

Не забудьте принять разрешение

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

Попробуйте этот код:

 public void writeToFile(String fileName, String body) { FileOutputStream fos = null; try { final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/folderName/" ); if (!dir.exists()) { if(!dir.mkdirs()){ Log.e("ALERT","could not create the directories"); } } final File myFile = new File(dir, fileName + ".txt"); if (!myFile.exists()) { myFile.createNewFile(); } fos = new FileOutputStream(myFile); fos.write(body.getBytes()); fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

Кроме того, не забудьте включить в файл манифеста разрешение внешнего хранилища:

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

И на android 6.0, чтобы запросить разрешение для WRITE_EXTERNAL_STORAGE

Вы использовали разрешение на запись в sd?

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

Я делаю это так

 public void write() { FileOutputStream output = null; try { String mediaState = Environment.getExternalStorageState(); if(mediaState.equalsIgnoreCase(Environment.MEDIA_MOUNTED)) { output = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/download/shared.txt")); String str = "Hello, writing to a text file"; byte[] b = encrypt2(str); output.write(b); } else { // error } } catch (IOException e) { e.printStackTrace(); } finally { try { if (output != null) output.close(); } catch (IOException e) { e.printStackTrace(); } } } public static byte[] encrypt2(String value) { byte[] input = value.getBytes(); int nLen = input.length; if(nLen % 2 != 0) { nLen--; } byte temp; for (int i = 0; i < nLen; i += 2) { temp = input[i+1]; input[i+1] = input[i]; input[i] = temp; } // do encryption return Base64.encode(input, Base64.NO_WRAP); } 

Также требуется разрешение

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

Попробуй это..

 stopWriting.setOnClickListener(new OnClickListener() { @SuppressLint("SdCardPath") public void onClick(View v) { // stop recording the sensor data try { myFile = new File("/sdcard/SensorData/" + txtData.getText() + ".txt"); myFile.createNewFile(); FileOutputStream fOut = new FileOutputStream(myFile); OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); myOutWriter.append(txtData.getText()); myOutWriter.close(); fOut.close(); Toast.makeText(getBaseContext(), "Done writing SD " + txtData.getText() + ".txt", Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); } } }); 

А также разрешение внешнего хранилища в файле манифеста:

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

Сначала объявите это разрешение для вашего androidManifest.xml:

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

Затем напишите этот код на событиях нажатия кнопки

  try { putStream fOut = new FileOutputStream(myFile); OutputStreamWriter myOutWriter =new OutputStreamWriter(fOut); myOutWrite File myFile = new File("/sdcard/SensorData.txt"); myFile.createNewFile(); FileOutr.append(txtData.getText()); myOutWriter.close(); fOut.close(); Toast.makeText(v.getContext(),"Done writing SD 'SensorData.txt'", Toast.LENGTH_SHORT).show(); txtData.setText(""); } catch (Exception e) { Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show(); } }