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

 更新时间:2016年01月12日 10:10:24   作者:Snail  
总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络。下面通过本文给大家介绍Android文件存储数据方式,对android文件存储数据相关知识感兴趣的朋友一起学习吧

总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络。下面通过本文给大家介绍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-获取网络时间、获取特定时区时间、时间同步的方法

    本篇文章主要介绍了android-获取网络时间、获取特定时区时间、时间同步,小编觉得不错,现在就分享给大家,有兴趣的可以了解一下。
    2016-12-12
  • Android  隐式Intent的实例详解

    Android 隐式Intent的实例详解

    这篇文章主要介绍了Android 隐式Intent的实例详解的相关资料,隐式意图就是在不明确设置激活对象的前提下寻找最匹配的组件,需要的朋友可以参考下
    2017-08-08
  • Android ViewPager实现左右滑动的实例

    Android ViewPager实现左右滑动的实例

    这篇文章主要介绍了Android ViewPager实现左右滑动的实例的相关资料,这里提供实现代码实现左右滑动的功能,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • Android按钮美化样式的实现代码

    Android按钮美化样式的实现代码

    本文给大家介绍android按钮美化样式的实现代码,主要是通过在drawable文件夹下 新建button_drawable.xml,具体实现代码跟随小编一起看看吧
    2019-11-11
  • android自定义popupwindow仿微信右上角弹出菜单效果

    android自定义popupwindow仿微信右上角弹出菜单效果

    这篇文章主要为大家详细介绍了android自定义popupwindow仿微信右上角弹出菜单效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • android sdk安装及开发环境部署

    android sdk安装及开发环境部署

    本文给大家详细讲解了android sdk安装方法以及android开发环境部署方法,非常的细致全面,有需要的小伙伴务必详细研究下。
    2015-11-11
  • Android TextView预渲染研究

    Android TextView预渲染研究

    这篇文章主要介绍了Android TextView预渲染研究的相关资料,需要的朋友可以参考下
    2016-09-09
  • Android中验证码倒计时的简单实现方法示例

    Android中验证码倒计时的简单实现方法示例

    最近开发中在注册获取验证码时候需要一个倒计时按钮,找了相关的资料终于实现了,所以现在分享给大家,下面这篇文章主要给大家介绍了关于Android中验证码倒计时简单实现的相关资料,需要的朋友可以参考借鉴。
    2017-06-06
  • Android自定义ViewGroup实现朋友圈九宫格控件

    Android自定义ViewGroup实现朋友圈九宫格控件

    在我们的实际应用中,经常需要用到自定义控件,比如自定义圆形头像,自定义计步器等等,这篇文章主要给大家介绍了关于Android自定义ViewGroup实现朋友圈九宫格控件的相关资料,需要的朋友可以参考下
    2021-07-07
  • Android实现闹钟小程序

    Android实现闹钟小程序

    这篇文章主要为大家详细介绍了Android实现闹钟小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06

最新评论