实例详解Android文件存储数据方式

所属分类: 软件编程 / Android 阅读数: 1354
收藏 0 赞 0 分享

总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络。下面通过本文给大家介绍Android文件存储数据方式。

1.文件存储数据使用了Java中的IO操作来进行文件的保存和读取,只不过Android在Context类中封装好了输入流和输出流的获取方法。

创建的存储文件保存在/data/data/<package name>/files文件夹下。

2.操作。

保存文件内容:通过Context.openFileOutput获取输出流,参数分别为文件名和存储模式。
读取文件内容:通过Context.openFileInput获取输入流,参数为文件名。
删除文件:Context.deleteFile删除指定的文件,参数为将要删除的文件的名称。
获取文件名列表:通过Context.fileList获取files目录下的所有文件名数组。

*获取文件路径的方法:

绝对路径:/data/data/<package name>/files/filename

Context:Context.getFilesDir()可以获取到"/data/data/<package name>/files"

3.四种文件保存的模式。

Context.MODE_PRIVATE 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下写入的内容会覆盖原文件的内容。

Context.MODE_APPEND 检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
MODE_WORLD_READABLE 表示当前文件可以被其他应用读取。
MODE_WORLD_WRITEABLE 表示当前文件可以被其他应用写入。

在使用模式时,可以用"+"来选择多种模式,比如openFileOutput(FILENAME, Context.MODE_PRIVATE + MODE_WORLD_READABLE);

下面通过程序来演示下文件存储的使用。完整代码下载:android_files.rar

/** 
* MainActivity 
* 
* @author zuolongsnail 
* 
*/ 
public class MainActivity extends Activity { 
private EditText writeET; 
private Button writeBtn; 
private TextView contentView; 
public static final String FILENAME = "setting.set"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
writeET = (EditText) findViewById(R.id.write_et); 
writeBtn = (Button) findViewById(R.id.write_btn); 
contentView = (TextView) findViewById(R.id.contentview); 
writeBtn.setOnClickListener(new OperateOnClickListener()); 
} 
class OperateOnClickListener implements OnClickListener { 
@Override 
public void onClick(View v) { 
writeFiles(writeET.getText().toString()); 
contentView.setText(readFiles()); 
System.out.println(getFilesDir()); 
} 
} 
// 保存文件内容 
private void writeFiles(String content) { 
try { 
// 打开文件获取输出流,文件不存在则自动创建 
FileOutputStream fos = openFileOutput(FILENAME, 
Context.MODE_PRIVATE); 
fos.write(content.getBytes()); 
fos.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 
// 读取文件内容 
private String readFiles() { 
String content = null; 
try { 
FileInputStream fis = openFileInput(FILENAME); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
byte[] buffer = new byte[1024]; 
int len = 0; 
while ((len = fis.read(buffer)) != -1) { 
baos.write(buffer, 0, len); 
} 
content = baos.toString(); 
fis.close(); 
baos.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
return content; 
} 
} 

程序截图:

提供一个文件存储数据的工具类:

/** 
* 文件存储数据方式工具类 
* 
* @author zuolongsnail 
*/ 
public class FilesUtil { 
/** 
* 保存文件内容 
* 
* @param c 
* @param fileName 
* 文件名称 
* @param content 
* 内容 
*/ 
private void writeFiles(Context c, String fileName, String content, int mode) 
throws Exception { 
// 打开文件获取输出流,文件不存在则自动创建 
FileOutputStream fos = c.openFileOutput(fileName, mode); 
fos.write(content.getBytes()); 
fos.close(); 
} 
/** 
* 读取文件内容 
* 
* @param c 
* @param fileName 
* 文件名称 
* @return 返回文件内容 
*/ 
private String readFiles(Context c, String fileName) throws Exception { 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
FileInputStream fis = c.openFileInput(fileName); 
byte[] buffer = new byte[1024]; 
int len = 0; 
while ((len = fis.read(buffer)) != -1) { 
baos.write(buffer, 0, len); 
} 
String content = baos.toString(); 
fis.close(); 
baos.close(); 
return content; 
} 
}

以上通过实例详解Android文件存储数据方式,希望对大家今后的工作学习有所帮助。

更多精彩内容其他人还在看

Android样式和主题之选择器的实例讲解

今天小编就为大家分享一篇关于Android样式和主题之选择器的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Android应用动态修改主题的方法示例

今天小编就为大家分享一篇关于Android应用动态修改主题的方法示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter 网络请求框架封装详解

这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Flutter倒计时/计时器的实现代码

这篇文章主要介绍了Flutter倒计时/计时器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android使用google breakpad捕获分析native cash

这篇文章主要介绍了Android使用google breakpad捕获分析native cash 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Flutter WebView与JS互相调用简易指南

这篇文章主要介绍了详解Flutter WebView与JS互相调用简易指南,分为JS调用Flutter和Flutter调用JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android开发实现ListView和adapter配合显示图片和文字列表功能示例

这篇文章主要介绍了Android开发实现ListView和adapter配合显示图片和文字列表功能,涉及Android使用ListView结合adapter适配器实现图文显示功能相关的布局、解析、权限控制等操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Android文字基线Baseline算法的使用讲解

今天小编就为大家分享一篇关于Android文字基线Baseline算法的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter自定义实现神奇动效的卡片切换视图的示例代码

这篇文章主要介绍了Flutter自定义实现神奇动效的卡片切换视图的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android实现自定义滑动刻度尺方法示例

这篇文章主要给大家介绍了关于Android实现自定义滑动刻度尺的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多