Android文件存储详细完整示例

MainActivity如下:

package cc.cv;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
 * Demo描述:
 * 文件存储详细示例
 *
 * 可利用Context的openFileOutput()方法将数据存储到文件中.
 * 默认的存储路径为/data/data/<packageName>/files/
 * 可利用Context的openFileInput()方法将数据从文件中读出
 *
 * 在Android中常用的存储方式:
 * SharedPreferences,数据库,SD卡,文件存储.
 * 对于最后一种方式平时用的不多,现在此写个例子
 * 整理和复习一下.
 *
 * 注意事项:
 * 文件存储是不需要权限的与在SD卡上进行文件存储是不一样的
 */
public class MainActivity extends Activity {
    private Button mSaveButton;
    private Button mGetButton;
    private Context mContext;
    private String mFileName;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}

	private void init(){
		mContext=this;
		mFileName="testData";
		mSaveButton=(Button) findViewById(R.id.saveButton);
		mSaveButton.setOnClickListener(new ClickListenerImpl());
		mGetButton=(Button) findViewById(R.id.getButton);
		mGetButton.setOnClickListener(new ClickListenerImpl());
	}

	private class ClickListenerImpl implements OnClickListener{
		@Override
		public void onClick(View view) {
			switch (view.getId()) {
			case R.id.saveButton:
				saveDataToFile(mContext,mFileName);
				break;
			case R.id.getButton:
				getDataFromFile(mContext,mFileName);
				break;
			default:
				break;
			}
		}

	}

	/**
	 * 向File中保存数据
	 */
	private void saveDataToFile(Context context,String fileName){
		String data="Hello,All";
		FileOutputStream fileOutputStream=null;
		OutputStreamWriter outputStreamWriter=null;
		BufferedWriter bufferedWriter=null;
		try {
			fileOutputStream=context.openFileOutput(fileName, Context.MODE_PRIVATE);
			outputStreamWriter=new OutputStreamWriter(fileOutputStream);
			bufferedWriter=new BufferedWriter(outputStreamWriter);
			bufferedWriter.write(data);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				if (bufferedWriter!=null) {
					bufferedWriter.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

	}

	/**
	 * 从File中读取数据
	 */
	private void getDataFromFile(Context context,String fileName){
		FileInputStream fileInputStream=null;
		InputStreamReader inputStreamReader=null;
		BufferedReader bufferedReader=null;
		StringBuilder stringBuilder=null;
		String line=null;
		try {
			stringBuilder=new StringBuilder();
			fileInputStream=context.openFileInput(fileName);
			inputStreamReader=new InputStreamReader(fileInputStream);
			bufferedReader=new BufferedReader(inputStreamReader);
			while((line=bufferedReader.readLine())!=null){
				stringBuilder.append(line);
			}
			System.out.println("--->"+stringBuilder.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				if (bufferedReader!=null) {
					bufferedReader.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

}

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <Button
        android:id="@+id/saveButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="向File中保存数据"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp" />

     <Button
        android:id="@+id/getButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="从File中获取数据"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="260dp" />

</RelativeLayout>

时间: 2024-10-10 07:56:04

Android文件存储详细完整示例的相关文章

Android清理设备内存详细完整示例(一)

MainActivity如下: package come.on; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; i

Android清理设备内存详细完整示例(二)

MainActivity如下: package cc.c; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.List; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.MemoryInfo;

Android清理设备内存详细完整示例

MainActivity如下: package cc.c; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.List; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.MemoryInfo;

Android文件存储的问题:ClassLoader和实现Parcelable接口后 详解及用途

可能小伙伴们读了我上一篇博客关于Android文件存储的的,在文件操作的时候大家有没有疑问呀,有就对了,可能在保存自定义对象的时候,如何序列化呀?ClassLoader到底是啥鬼呀?序列化后怎么读取出来呀?好吧,针对于上面的问题,我一个一个的说明吧! 今天主要是讲ClassLoader的用途, ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 1.1 几个相关概念ClassLo

android: 文件存储

数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑 关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在 存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状 态和持久状态之间进行转换. 持久化技术被广泛应用于各种程序设计的领域当中,而本书中要探讨的自然是 Android 中的数据持久化技术.Android 系统中主要提供了三种方式用于简单地实现数据持久化功能, 即文件存储.SharedPreference 存储以

android文件存储位置切换

最近有个需求,助手的google卫星地图和OpenCycleMap下载的离线地图数据,要能够在内置存储和外置存储空间之间切换,因为离线瓦片数据非常大,很多户外用户希望将这些文件存储在外置TF卡上,不占用内置存储空间,所以把最近研究的整理了下,分享给大家. 需要考虑和遇到的问题(主要是不同手机.不同系统的兼容性): 1.这样获取手机所有挂载的存储器?   Android是没有提供显式的接口的,首先肯定是要阅读系统设置应用“存储”部分的源码,看存储那里是通过什么方式获取的.最后找到StorageMa

Android文件存储使用参考

可能遇到的问题 android系统自身自带有存储,另外也可以通过sd卡来扩充存储空间.前者好比pc中的硬盘,后者好移动硬盘. 前者空间较小,后者空间大,但后者不一定可用. 开发应用,处理本地数据存取时,可能会遇到这些问题: 需要判断sd卡是否可用: 占用过多机身内部存储,容易招致用户反感,优先将数据存放于sd卡; 应用数据存放路径,同其他应用应该保持一致,应用卸载时,清除数据: 标新立异在sd卡根目录建一个目录,招致用户反感 用户卸载应用后,残留目录或者数据在用户机器上,招致用户反感 数据安全性

程序员带你学习安卓开发系列-Android文件存储

这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:.Net程序员快速学习安卓开发-布局和点击事件的写法 主要讲解了布局和点击事件的写法. 上篇文章补充: 控件单位介绍: px 像素 dip或者dp 设备独立像素 sp 比例像素 控件的高度宽度一般用dip或者dp.字体用sp. Android 存储数据项目: 描述:实现QQ登录效果.如图: 输入帐号密码,并勾选记住帐号 ,点击登录时,保存帐号信息.下次登陆可以直接显示上次保存的QQ帐号. 前台界面

android 文件存储对文件名大小写不敏感

1.开发中发现,当两个文件名只有大小写的区别,其他都一样的情况,android中会默认是同一个文件. 比如,你在同一个文件夹下有一个文件 aa.txt   重新创建一个文件命名为AA.txt  android系统会认为这俩是同一个文件,从而出现覆盖的问题. 经测试发现,windows.Mac osx 系统也是这样的. 2.项目中遇到的问题是.创建文档时防止文件重名导致的覆盖问题.使用 file.exist()方法来判断文件是否存在,经测试发现: 存储路径时sd卡时,该方法不区分大小写,但是路径在