Android学习笔记之数据的内部存储方式实习数据的读写、存储到Cache实现读写 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    (1)目录结构

   

    (2) 布局文件:

    <喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">

    (3)保存数据、读取数据的工具类:FileService.java

   

package com.example.data_storage_interal.file;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.content.Context;/** * 使用内部存储的方式,可以使应用卸载的时候清除所有的相关信息 *  * @author piaodangdehun *  */public class FileService {	private Context context;	public FileService(Context context) {		this.context = context;	}	/**	 * 保存内容到文件中	 * 	 * @param fileName	 *            : 文件名	 * @param mode	 *            :模式	 * @param data	 *            :数据的缓冲区	 * @return 返回真假值	 */	public boolean saveContentToFile(String fileName, int mode, byte[] data) {		boolean flag = false;		FileOutputStream utputStream = null;		try {			utputStream = context.openFileOutput(fileName, mode);			try {				outputStream.write(data, 0, data.length);			} catch (IOException e) {				e.printStackTrace();			}			flag = true;		} catch (FileNotFoundException e) {			e.printStackTrace();		} finally {			if (outputStream != null) {				try {					outputStream.close();				} catch (Exception e2) {				}			}		}		return true;	}	/**	 * 读取数据	 * 	 * @param fileName	 * @return	 */	public String readContentFromFile(String fileName) {		String result = "";		FileInputStream fileInputStream = null;		ByteArrayOutputStream utputStream = new ByteArrayOutputStream();		try {			fileInputStream = context.openFileInput(fileName);			int len = 0;			byte[] data = new byte[1024];			while ((len = fileInputStream.read(data)) != -1) {				outputStream.write(data, 0, len);			}			return new String(outputStream.toByteArray());		} catch (Exception e) {			e.printStackTrace();		}		return "";	}	/*	 * 保存文件到Chace中	 */	public boolean saveCacheFile(String fileName, byte[] data) {		boolean flag = false;		File file = context.getFilesDir();		FileOutputStream utputStream = null;		try {			File folderFile = new File(file.getAbsoluteFile() + "/txt");			if (!folderFile.exists()) {				folderFile.mkdirs();// 创建目录			}			// context.openFileOutput("my.txt", context.MODE_WORLD_READABLE);			utputStream = new FileOutputStream(folderFile.getAbsolutePath()					+ "/" + fileName);			try {				outputStream.write(data, 0, data.length);			} catch (IOException e) {				e.printStackTrace();			}		} catch (FileNotFoundException e) {			e.printStackTrace();		} finally {			if (outputStream != null) {				try {					outputStream.close();				} catch (IOException e) {					e.printStackTrace();				}			}		}		// System.out.println("-->>"+file.getAbsolutePath());		return flag;	}	/*	 * 获得文件的完整路径	 */	public void listCacheFile() {		/*		 * String[] strings = context.fileList(); for (int i = 0; i<		 * strings.length; i++) { System.out.println("-->>" + strings); }		 */		File file = context.getFilesDir();		File root = new File(file.getAbsoluteFile() + "/txt");		File[] listFiles = root.listFiles();		for (File file2 : listFiles) {			System.err.println("--->>" + file2.getAbsolutePath());		}	}}

(4)MainActivity.java

package com.example.data_storage_interal;import com.example.data_storage_interal.file.FileService;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {	private Button button;	private EditText editText;	private FileService fileService;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		button = (Button) this.findViewById(R.id.button1);		editText = (EditText) this.findViewById(R.id.editText1);		fileService = new FileService(this);		/*		 * 按钮点击的时候存放到文件中		 */		button.setOnClickListener(new OnClickListener() {			@Override			public void onClick(View v) {				String valueString = editText.getText().toString().trim();				boolean flag = fileService.saveContentToFile("bb.txt",						Context.MODE_APPEND, valueString.getBytes());				if (flag) {					Toast.makeText(MainActivity.this, "保存成功!",							Toast.LENGTH_SHORT).show();				}			}		});	}	@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;	}}

    (5)测试类(要在资源文件中添加相应的信息、这里不说)

   

package com.example.data_storage_interal;import com.example.data_storage_interal.file.FileService;import android.app.Service;import android.content.Context;import android.test.AndroidTestCase;import android.util.Log;public class MyTest extends AndroidTestCase {	private static final String TAG = "MyTest";	/*	 * 保存数据	 */	public void save() {		FileService fileService = new FileService(getContext());		boolean flag = fileService.saveContentToFile("aa.txt",				Context.MODE_PRIVATE + Context.MODE_APPEND, "nihao".getBytes());		Log.i(TAG, "--->>" + flag);	}	/*	 * 保存数据	 */	public void read() {		FileService fileService = new FileService(getContext());		String msg = fileService.readContentFromFile("bb.txt");		Log.i(TAG, "--->>" + msg);	}	public void testChaceFile() {		FileService fileService = new FileService(getContext());		fileService.saveCacheFile("hello.txt", "hello world!".getBytes());	}	public void testListFile() {		FileService fileService = new FileService(getContext());		fileService.listCacheFile();	}}

    保存成功后会在data-data-apk的安装目录下找到相应的文件:

   

最新文章