android-数据持久化之文件存储

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangxuewei111/article/details/45480077

1.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<EditText 
    android:id="@+id/edit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="数据存储"
    
    />

</LinearLayout>

2.MainActivity.java

package com.king.filepersistencetest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;
import android.view.Menu;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	private EditText edit;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		edit = (EditText) findViewById(R.id.edit);
		String inputText = load();
		if(!TextUtils.isEmpty(inputText)){
			//将读取文字设置
			edit.setText(inputText);
			//设置光标位置
			edit.setSelection(inputText.length());
			Toast.makeText(this, "Restoring successeded", Toast.LENGTH_SHORT).show();
		}
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		String inputText = edit.getText().toString();
		save(inputText);
	}
	
	public void save(String inputText){
		FileOutputStream out = null;
		BufferedWriter writer = null;
		
		try {
			/*
			 *openFileOutput第一个参数是存储的文件名(默认存储路径/data/data/<packagename>/files目录下>)
			 *第二个参数是文件操作模式,MODE_PRIVATE:默认操作模式,表示当制动同样文件名的时候,所写入的内容将会覆盖原文件中的内容
			 *MODE_APPEND:表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件。
			 * 
			 * openFileOutput返回的是一个FileOutputStream对象,得到了这个对象之后就可以使用java流操作
			 */
			out = openFileOutput("data", Context.MODE_PRIVATE);
			writer = new BufferedWriter(new OutputStreamWriter(out));
			writer.write(inputText);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				if(writer != null){
					writer.close();
				}
				
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		
	}
	
	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 (Exception e) {
			e.printStackTrace();
		}finally{
			if(reader != null){
				try {
					reader.close();
					
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		return content.toString();
		
	}


}

3.找到你的data文件

然后切换到DDMS视图,并点击File Explorer切换卡,在这里进入到/data/data/com.king.filepersistencetest/files目录下,可以看到生成了一个data文件

猜你喜欢

转载自blog.csdn.net/wangxuewei111/article/details/45480077