第五章以数据为中心—数据存取

典型的桌面操作系统提供一种公共文件系统——任何应用软件可以使用它来存储和读取文件,该文件也可以被其它的应用软件所读取(会有一些权限控制设定)。而Android 采用了一种不同的系统。在Android 中,所有的应用软件数据(包括文件)为该应用软件所私有。然而,Android 同样也提供了一种标准方式供应用软件将私有数据开放给其它应用软件。这一章将描述一个应用软件存储和获取数据、开放数据给其他应用软件、从其他应用软件请求数据并且开放它们的多种方式。

可供选择的存储方式有:文件存储、SQLite 数据库方式、SharedPreferences、content provider(内容提供器)。我们将在本章详细的进行介绍。

5.1 文件操作

5.1.1 读写一般的文本文件

先来看下Java语言对于文件或文件夹操作的常用API:

String path = File.getPath();//相对路径

String path = File.getAbsoultePath();//绝对路径

String parentPath = File.getParent();//获得文件或文件夹的父目录

String Name = File.getName();

File.mkDir();//建立文件夹

File.createNewFile();//建立文件

File.isDirectory();//判断是文件或文件夹

File[] files = File.listFiles();//列出文件夹下的所有文件和文件夹名

File.renameTo(dest);//修改文件夹和文件名

File.delete();//删除文件夹或文件

在Android中,也常常会对SD卡下的文件进行操作:

Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

// 判断SD卡是否插入

File skRoot = Environment.getExternalStorageDirectory(); //获得sd卡根目录

File fileRoot = Context.getFilesDir()+"//"; //获得私有根目录

和传统的Java 中实现I/O 的程序类似,在Android中,其提供了openFileInput 和openFileOuput方法读取设备上的文件。

下面看个例子代码,具体如下所示:

String FILE_NAME = "tempfile.tmp";//确定要操作文件的文件名

FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);//初始化

FileInputStream fis = openFileInput(FILE_NAME);//创建写入流

经验分享:

默认情况下,使用openFileOutput()方法创建的文件只能被其调用的应用使用,其它应用无法读取这个文件,如果需要在不同的应用中共享数据,可以使用Content Provider 实现,关于Content Provider 我们将在稍后的内容中介绍。

Android的文件操作要有权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

在Android开发中,资源文件一般放在哪里?

如果你的应用需要一些额外的资源文件,例如,一些用来测试你写的音乐播放器是否可以正常工作的MP3 文件,可以将这些文件放在应用程序的/res/raw/下,如mydatafile.mp3。那么就可以在你的应用中使用getResources 获取资源后,以openRawResource方法(不带后缀的资源文件名)打开这个文件,实现代码如下所示:

Resources myResources = getResources();

InputStream myFile = myResources.openRawResource(R.raw.myfilename);

-------------------------------------------- 程序员赚钱不易 一定要学会理财 平安陆金所 隶属于平安集团的p2p平台 年投资回报率7%-9% 是替代银行理财的首选 个人经验 推荐投资安鑫或者有担保的彩虹项目 不要投资安e 那个几乎无法转让 想提前提现非常困难 网站链接 http://affiliate.lufax.com/action/36XBU 首次投资1000元即可额外赚几百元 不赚白不赚 --------------------------------------------

下面我们来看下个例子,读取目录/res/raw/下的资源文件test.txt。

// import略

public class ReadTextTest extends Activity {

public static final int REFRESH = 0x000001;

private TextView text = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

text = new TextView(this);

text.setBackgroundColor(0xff000000);

text.setTextColor(0xffffffff);

text.setGravity(Gravity.CENTER);

InputStreamReader inputStreamReader = null;

InputStream inputStream = getResources().openRawResource(R.raw.test);

try {

inputStreamReader = new InputStreamReader(inputStream, "utf-8");

} catch (UnsupportedEncodingException e1) {

e1.printStackTrace();

}

BufferedReader reader = new BufferedReader(inputStreamReader);

StringBuffer sb = new StringBuffer("");

String line;

try {

while ((line = reader.readLine()) != null) {

sb.append(line);

sb.append("\n");

}

} catch (IOException e) {

e.printStackTrace();

}

text.setText(sb.toString());

setContentView(text);

}

}

在/res/raw/目录下新建test.txt文件,加入“测试读取txt文件”文字,保存为UTF-8的格式。

图 5-1为程序运行的结果:

图 5-1 读取txt文档的结果

更多相关文章

  1. android studio导入gbk编码的工程文件导致的乱码问题
  2. Android 数据缓存-文件存储
  3. Android 开发之深入分析布局文件&又是“Hello World!”
  4. android app 浅谈文件上传(图片和文件)
  5. 转载:Android中对Log日志文件的分析
  6. 一步一步学Android ROM开发(一)——修改现有ROM资源文件
  7. 浅谈如何在Eclipse下的Android工程配置Git的.gitignore文件
  8. Android遍历本地视频文件加过滤
  9. Android生成pdf文件之PdfDocument及踩过的坑

随机推荐

  1. ANDROID中点击事件的实现方式
  2. iPod Touch也将支持运行Android系统
  3. 设计模式~单例-[Android_YangKe]
  4. Android(安卓)传感器开发 完全解析
  5. 【Android】程序设计 ——记账App项目and
  6. Google Developing for Android(安卓)一
  7. Android(安卓)Drawable及其相关类的使用
  8. Android闹钟 AlarmManager的使用
  9. 【Andorid】短视频拍摄SDK——Vitamio Re
  10. 【Android】Dagger2 + MVVM