1.SharePreferences存储数据

用于存放一些类似登陆的配置信息,本质是一个xml文件,通过类似键值对的方式存储

 - MODE_APPEND:追加方式存储
 - MODE_PRIVATE:私有方式存储,其他应用无法访问(默认的操作模式)
 - MODE_WORLD_READABLE:可被其他应用读取
 - MODE_WORLD_WRITEABLE:可被其他应用写入

 要想使用SharedPreference,首先要先获取它的对象,android提供了3类方法:

context类中的getSharedPreference()方法

这个方法接收两个参数,第一个用来指定SharePreference文件的名称。如果指定的文件不存在,则会创建一个,sharepreferences文件都是存放在/data/data/<package name>/shared_prefs/目录下的。第二个参数用于指定操作模式,目前只有MODE_PRIVATE是可选的,其他方式都被丢弃了。

Activity中的getPreferences()方法

这个方法和context类中的getSharedPreference()方法很相似,但是它只接受后面一个参数,他会自动将当前活动的类名作为SharePreference的文件名。

PreferenceManager类中的getDefaultSharedPreference()方法

这是一个静态方法,他接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名。得到SharePreferences对象之后,就可以向这个SharePreference文件中存储数据了

代码:

  savebtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences.Editor editor=getSharedPreferences("data",MODE_PRIVATE).edit();//获得editor对象
                editor.putString("name","Tom");
                editor.putInt("age",28);
                editor.putBoolean("married",false);
                editor.apply();//提交
            }
        });

好的,我遇到一个问题。。。。。data.xml文件没找到:

Android-数据存储方式

先mark一下,看下今晚能不能解决。

 

2.文件存储(内外部)

将数据存在文件中


这种存储不对存储的内容做任何格式化处理,所有数据都是原封不动保存在文件当中。
  使用范围:简单的文本数据或者二进制数据

Context类中提供一个openFileoutput()的方法,接收两个参数,第一个参数是文件名,第二个参数是文件的操作模式。操作模式分为两种:MODE_PRIVATE是默认的操作模式,表示有相同文件名的时候,所写入的文件会覆盖源文件的内容;Mode_APPEND表示如果文件存在,则往文件追加内容,不存在则创建新文件。
  其实就是用java的io流来进行操作,注意所有的文件都是默认存储到/data/data/<packagename>/files/目录下的。

上代码:

 public void save() {
        String data = "data to save";
        FileOutputStream out = null;
        BufferedWriter writer = null;
        try {
            out = openFileOutput("data", Context.MODE_PRIVATE);
            writer = new BufferedWriter(new OutputStreamWriter(out));
            writer.write(data);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (writer != null) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

这是存储文件的方法。我用java 的IO流还不太熟悉,明天会继续补充这方面的博客

 

加入一个文本编辑框:

<EditText
    android:id="@+id/edit"
    android:hint="type somthing here!"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
public class MainActivity extends AppCompatActivity {

    private EditText edittext;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edittext=(EditText)findViewById(R.id.edit);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        String input=edittext.getText().toString();
        save(input);
    }

    public void save(String input) {
        String data = input;
        FileOutputStream out = null;
        BufferedWriter writer = null;
        try {
            out = openFileOutput("data", Context.MODE_PRIVATE);
            writer = new BufferedWriter(new OutputStreamWriter(out));
            writer.write(data);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (writer != null) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

}

 

当当!!开心~~成功!

Android-数据存储方式Android-数据存储方式

Android-数据存储方式

从文件中读取数据:

Context类中提供了一个openFileInput()方法,用于从文件中读取数据,这个方法只接收一个参数,就是要读取的文件名,然后系统会自动到默认目录/data/data/<packagename>/files/去加载文件,并返回一个FileInputStream对象。

读取文件的代码:

public String load() {
        FileInputStream in = null;
        BufferedReader reader = null;
        StringBuilder content = new StringBuilder();
        try {
            in = openFileInput("data");
            reader = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while ((line=reader.readLine())!=null) {
                content.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return content.toString();
    }

 调用load()方法:

   String input=load();
        if(!TextUtils.isEmpty(input)){
            edittext.setText(input);
            edittext.setSelection(input.length());//将光标移到文本末尾
            Toast.makeText(this,"Success",Toast.LENGTH_LONG).show();;

        }

Android-数据存储方式

 


3.SQLite数据库存储

4.ContentProvider存储数据

 

5.网络存储数据

相关文章: