How to save the data in the internal memory of an Android device?

3

I am writing files in the external memory of the device, I am doing the following:

File arquivo = new File(Environment.getExternalStorageDirectory()+"/"+ nomeArquivo.getText().toString() + ".txt");

I'm writing the file in the external memory of the right cell phone? So if the phone does not have a memory card I will not be able to save my data. What do I do in this case to save the data to the internal memory of the device?

    
asked by anonymous 11.02.2014 / 18:51

2 answers

8

First of all, it's worth reading the official Android documentation on saving files.

To save to internal memory, we use the openFileOutput () method passing as parameters the file name and mode / permission.

Permissions can be private and public.

FileOutputStream fOut = openFileOutput("nome do arquivo",MODE_WORLD_READABLE)

The openFileOutput () method returns an instance of FileOutputStream , so you receive a FileInputStream object. After that, you can call the typing métpdp to write the data in the file:

String str = "data";
fOut.write(str.getBytes());
fOut.close();

To read the file:

FileInputStream fin = openFileInput('nome do arquivo');

Sample class:

package com.example.storage;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

   private EditText et;
   private String data;
   private String file = "arquivo";
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      et = (EditText)(findViewById(R.id.editText1));

   }

   public void save(View view){
      data = et.getText().toString();
      try {
         FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);
         fOut.write(data.getBytes());
         fOut.close();
         Toast.makeText(getBaseContext(),"file saved",
         Toast.LENGTH_SHORT).show();
      } catch (Exception e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
   public void read(View view){
      try{
         FileInputStream fin = openFileInput(file);
         int c;
         String temp="";
         while( (c = fin.read()) != -1){
            temp = temp + Character.toString((char)c);
         }
         et.setText(temp);
         Toast.makeText(getBaseContext(),"file read",
         Toast.LENGTH_SHORT).show();

      }catch(Exception e){

      }
   }
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }

}
    
11.02.2014 / 18:58
1

In fact Environment.getExternalStorageDirectory () does not mean the directly to the micro SD memory card, the one you can exchange for another, basically this command returns a large capacity storage folder shared by all the apps.

More information at: link

To read / write to the external sdcard, in this case the memory card, you have to check if the path "/ mnt / extSdCard" exists.

    
11.02.2014 / 19:12