开发者社区> 小弟的谷哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Android文件存储详细完整示例

简介: MainActivity如下: package cc.cv; import java.io.BufferedReader; import java.
+关注继续查看

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>


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android/iOS内嵌Unity开发示例
Android/iOS内嵌Unity开发示例
0 0
Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
0 0
Android——MVC、MVP、MVVM框架实现登录示例
MVC 描述 缺点 优点 MVP 效果图 描述 缺点 优点 代码解析 视图效果图 建立实体类 建立实体类接口 实现实体类接口 设置P层 建立交互接口 数据绑定 MVVM 效果图 描述 代码解析 导入dataBinding 实体类 建立viewmodel xml绑定数据 视图与数据绑定
0 0
【Android 逆向】加壳技术识别 ( VMP 加壳示例 | Dex2C 加壳示例 )
【Android 逆向】加壳技术识别 ( VMP 加壳示例 | Dex2C 加壳示例 )
0 0
【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
0 0
【Android 应用开发】动态权限管理示例 ( 使用原生代码实现 | 申请权限 | 判定权限申请结果 | 判定 “ 不再询问 “ 情况 )(二)
【Android 应用开发】动态权限管理示例 ( 使用原生代码实现 | 申请权限 | 判定权限申请结果 | 判定 “ 不再询问 “ 情况 )(二)
0 0
【Android 应用开发】动态权限管理示例 ( 使用原生代码实现 | 申请权限 | 判定权限申请结果 | 判定 “ 不再询问 “ 情况 )(一)
【Android 应用开发】动态权限管理示例 ( 使用原生代码实现 | 申请权限 | 判定权限申请结果 | 判定 “ 不再询问 “ 情况 )(一)
0 0
【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )(二)
【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )(二)
0 0
【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )(一)
【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )(一)
0 0
【Flutter】Flutter 拍照示例 ( Flutter 插件配置 | Flutter 插件源码示例 | iOS 应用配置 | Android 应用配置 )(二)
【Flutter】Flutter 拍照示例 ( Flutter 插件配置 | Flutter 插件源码示例 | iOS 应用配置 | Android 应用配置 )(二)
0 0
+关注
小弟的谷哥
welcome
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载