Encontré muchos temas con el mismo problema, pero no pudieron solucionar el mío. Inicialmente escribo un archivo de la siguiente manera:`
File root = new File(Environment.getExternalStorageDirectory(), "Notes"); if (!root.exists()) { root.mkdirs(); } File notefile = new File(root, sFileName); FileWriter writer = null; try { writer = new FileWriter(notefile); } catch (IOException e1) { e1.printStackTrace(); } try { writer.append(sBody); } catch (IOException e1) { e1.printStackTrace(); } try { writer.flush(); } catch (IOException e1) { e1.printStackTrace(); } try { writer.close(); } catch (IOException e1) { e1.printStackTrace(); }
No te preocupes por los bloques de prueba y captura, los borraré más tarde: D. Y este es el lector que debería funcionar en el mismo directorio ("Notas" de la tarjeta SD, si no existe, se crearán), lea el archivo y colóquelo en Notificar como puede ver:
File root = new File(Environment.getExternalStorageDirectory(), "Notes"); if (!root.exists()) { root.mkdirs(); } File file = new File(root, "Nota.txt"); //Read text from file text = new StringBuilder(); try { BufferedReader br = new BufferedReader(new FileReader(file)); String line; while ((line = br.readLine()) != null) { text.append(line); text.append('\n'); } br.close() ; }catch (IOException e) { e.printStackTrace(); }
Realmente no entiendo por qué tengo este problema, incluso intento con
getExternalStorageDirectory().getAbsolutePath()
pero sin éxito.
¿Alguien me puede ayudar?
Ha intentado verificar con un depurador si existe la raíz cuando lo hace:
File root = new File(Environment.getExternalStorageDirectory(), "Notes"); if (!root.exists()) { root.mkdirs(); }
No creo que cree la carpeta cuando escriba el archivo
Para escribir un archivo en el almacenamiento externo, debe tener habilitado el permiso WRITE_EXTERNAL_STORAGE.
¿Por qué está tratando de escribir un archivo en el almacenamiento externo?
Quiero decir, si desea este archivo para su aplicación solo significa, use context.getExternalDirs() para obtener la zona de pruebas de su aplicación, no requiere permiso de escritura, por encima de Android 4.2 (Jelly bean).
Si desea compartir el archivo con otras aplicaciones, está haciendo el trabajo correcto.
Y antes de escribir el archivo, verifique si el almacenamiento externo está montado mediante programación.
Usé SharedPreferences de Android. Guardé los datos en MainActivity y los tomé en mi clase de la siguiente manera:
Actividad principal
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = prefs.edit(); editor.putString("string_id", InputString); //InputString: from the EditText editor.commit();
En mi clase para obtener mis datos
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); String data = prefs.getString("string_id", "no id"); //no id: default value