Android设备上的所有应用都有一个放置在沙盘中的文件目录,将文件保存到沙盒中可以阻止其他应用的访问。

沙盒目录的全路径为:/data/data/<包名> 用File Explorer查看:


如上图可见,每个应用都在/data/data下有一个以此应用包名命名的文件目录。

而本文就是介绍将文件保存在/data/data/<包名>/files/目录下


下面就展示如何在内部存储设备中存储和加载本地文件:


1、创建一个名为 DataStorage的工程


2、准备好布局文件(activity_data_storage.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/data_view"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="未操作" />    <Button        android:id="@+id/save_button"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="保存数据" />    <Button        android:id="@+id/load_button"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="加载数据" /> </LinearLayout>


3、DataStorageActivity.java

package com.example.datastorage;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.Writer;import android.content.Context;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class DataStorageActivity extends ActionBarActivity {private static final String FILENAME = "data.txt";private static final String TAG = "DataStorageActivity";private TextView dataView;private Button saveButton;private Button loadButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_date_storage);dataView = (TextView) findViewById(R.id.data_view);saveButton = (Button) findViewById(R.id.save_button);loadButton = (Button) findViewById(R.id.load_button);setListener();}private void setListener() {saveButton.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {try {saveData();} catch (IOException e) {}Toast.makeText(DataStorageActivity.this, "保存成功",Toast.LENGTH_SHORT).show();}});loadButton.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {try {loadData();} catch (FileNotFoundException e) {} catch (IOException e) {}}});}public void saveData() throws IOException {OutputStream out = this.openFileOutput(FILENAME, Context.MODE_PRIVATE);/* 参数一: 文件名。 * 如果文件不存在,Android会自动创建它。创建的文件保存在/data/data/<package name>/files目录下 * 参数二: 文件操作模式参数。代表该文件是私有数据,只能被应用本身访问。 * */Writer writer = new OutputStreamWriter(out);try {String str = "来自保存在内部存储设备的数据";writer.write(str);} finally {writer.close();}}public void loadData() throws FileNotFoundException, IOException {BufferedReader reader = null;StringBuilder data = new StringBuilder();try {InputStream in = this.openFileInput(FILENAME);Log.i(TAG, in.toString());reader = new BufferedReader(new InputStreamReader(in));String line = new String();while ((line = reader.readLine()) != null) {data.append(line);}dataView.setText(data);} catch (FileNotFoundException e) {dataView.setText("没有发现保存的数据");} finally {reader.close();}}}

运行程序,点击保存数据按钮,Toast显示保存成功字样后。再点击加载数据按钮:



可以发现保存在内部存储设备的设备被加载后在TextView显示。再看文件具体位置:





#DONE#


更多相关文章

  1. Android(安卓)应用程序基础(对大家有个概括吧)
  2. Android(安卓)—— 注解(Annotation)也被称为元数据(Metadata)
  3. 理解 Android(安卓)本地数据存储 API
  4. 只需五分钟,开始使用Kotlin开发Android
  5. Android(安卓)Adobe XMP与JPEG
  6. Android(安卓)Studio3.5 xml文件格式化(Reformat Code)后元素会
  7. 【Android】Android(安卓)BLE开发
  8. Android实现在线预览office文档(Word,Pdf,excel,PPT.txt等格式)
  9. eclipse配合Android(安卓)Studio部署Android(安卓)NDK开发环境

随机推荐

  1. Android ScrollView自动滑动一段距离的问
  2. android 应用如何获取系统权限 以及root
  3. Android ViewPager嵌套ViewPager+Fragmen
  4. android webview快速获取页面上的图片
  5. 【简单的学生管理界面】Android的if语句
  6. Android shape中的padding无效
  7. Android代码混淆只需简单三步
  8. Android(安卓)通讯录学习笔记之——目标:
  9. android官方技术文档翻译——工具属性
  10. 穿针引线,帮你回忆, 汇总:Android系统启动流