studio memoria liberar interno interna guardar externo example espacio escribir datos como archivos almacenamiento android local-storage mkdirs

memoria - internal storage android example



guardando archivo en almacenamiento interno de android (2)

Soy nuevo en Android y tengo un problema al intentar guardar un archivo en el almacenamiento interno, el nuevo ejemplo funciona en mi SDK, pero no funciona en mi teléfono

Estoy tratando de ejecutar el ejemplo en un Sony Ericsson Xperia, con Android 2.1, por cierto ... el log.i - me da la siguiente línea:

/data/data/com.example.key/files/text/(my_title)

Gracias.

@Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.new_text); file = (EditText) findViewById(R.id.title_new); entry = (EditText) findViewById(R.id.entry_new); btn = (Button) findViewById(R.id.save_new); btn.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { File myDir = getFilesDir(); NEWFILENAME = file.getText().toString(); if (NEWFILENAME.contentEquals("")){ NEWFILENAME = "UNTITLED"; } NEWENTRY = entry.getText().toString(); try { File file_new = new File(myDir+"/text/", NEWFILENAME); file_new.createNewFile(); Log.i("file", file_new.toString()); if (file_new.mkdirs()) { FileOutputStream fos = new FileOutputStream(file_new); fos.write(NEWENTRY.getBytes()); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Intent textPass = new Intent("com.example.TEXTMENU"); startActivity(textPass); } }); } //That''s for creating... then in other activity i''m reading @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.text_menu); btn = (Button) findViewById(R.id.newNote); listfinal = (ListView) findViewById(R.id.listView); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent textPass = new Intent("com.example.TEXTNEW"); startActivity(textPass); } }); listfinal.setOnItemClickListener(this); File fileWithinMyDir = getApplicationContext().getFilesDir(); loadbtn = (Button) findViewById(R.id.loadList); loadbtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { File myDir = getFilesDir(); File dir = new File(myDir + "/text/"); String[] files = dir.list(); //String[] files = getApplicationContext().fileList(); List<String> list = new ArrayList<String>(); for (int i =0; i < files.length; i++){ list.add(files[i]); } ArrayAdapter<String> ad = new ArrayAdapter<String>(TextMenu.this, android.R.layout.simple_list_item_1, android.R.id.text1, list); listfinal.setAdapter(ad); } }); }

En mi manifiesto de Android tengo los permisos.

<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="15" /> <uses-permission android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />


No estoy muy seguro de a qué ejemplo se refiere, pero tengo dos muestras de trabajo aquí de las cuales al menos una de ellas debe satisfacer sus necesidades. Los probé en un X10 con compilación número 2.1.A.0.435, un Xperia T con compilación número 7.0.A.1.303 y un Nexus S con compilación número JZO54K

Ejemplo 1

String filename = "myfile"; String outputString = "Hello world!"; try { FileOutputStream outputStream = openFileOutput(filename, Context.MODE_PRIVATE); outputStream.write(outputString.getBytes()); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } try { FileInputStream inputStream = openFileInput(filename); BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder total = new StringBuilder(); String line; while ((line = r.readLine()) != null) { total.append(line); } r.close(); inputStream.close(); Log.d("File", "File contents: " + total); } catch (Exception e) { e.printStackTrace(); }

Ejemplo 2

String filename = "mysecondfile"; String outputString = "Hello world!"; File myDir = getFilesDir(); try { File secondFile = new File(myDir + "/text/", filename); if (secondFile.getParentFile().mkdirs()) { secondFile.createNewFile(); FileOutputStream fos = new FileOutputStream(secondFile); fos.write(outputString.getBytes()); fos.flush(); fos.close(); } } catch (Exception e) { e.printStackTrace(); } try { File secondInputFile = new File(myDir + "/text/", filename); InputStream secondInputStream = new BufferedInputStream(new FileInputStream(secondInputFile)); BufferedReader r = new BufferedReader(new InputStreamReader(secondInputStream)); StringBuilder total = new StringBuilder(); String line; while ((line = r.readLine()) != null) { total.append(line); } r.close(); secondInputStream.close(); Log.d("File", "File contents: " + total); } catch (Exception e) { e.printStackTrace(); }


Tuve un problema de "Permiso denegado" con el Samsung Galaxy S7 a pesar de que había dado permisos de lectura y escritura en el archivo de manifiesto. Lo resolví yendo a la configuración del teléfono >> aplicación >> [mi aplicación] y permití el "Almacenamiento" con permiso. Trabajó bien después de eso.