Android文件的读写
Android的文件读写与JavaSE的文件读写相同,都是使用IO流。而且Android使用的正是JavaSE的IO流,下面我们通过一个练习来学习Android的文件读写。
1.创建一个Android工程
Project name:File
BuildTarget:Android2.2
Application name:文件读写
Package name:com.jbridge.file
Create Activity:DateActivity
Min SDK Version:8
strings.xml文件内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">数据保存</string>
<string name="file_name">文件名</string>
<string name="file_content">文件内容</string>
<string name="button_file_save">保存</string>
<string name="button_file_read">读取</string>
<string name="file_save_success">保存文件成功</string>
<string name="file_save_failed">保存文件失败</string>
<string name="file_read_failed">读取文件失败</string>
</resources>
Android建议采用MVC开发模式,所以我们在Android应用开发中最好使用MVC设计模式。MVC设计模式使三层分离,从而很好的解耦,何乐而不为。
首先我们向工程中添加一个FileService.java:
package com.jbridge.service;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import android.content.Context;
import android.os.Environment;
public class FileService {
// Activity的父类的父类就是context,context与其他框架中的context相同为我们以供了一些核心操作工具。
private Context context;
public FileService(Context context) {
this.context = context;
}
public void saveToSDCard(String filename, String content) throws Exception{
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File file = new File(Environment.getExternalStorageDirectory(), filename);
FileOutputStream outStream = new FileOutputStream(file);
outStream.write(content.getBytes());
outStream.close();
}
}
public void save(String filename, String content) throws Exception{
FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_PRIVATE);
outStream.write(content.getBytes());
outStream.close();
}
然后再向工程中添加FileButtonOnClickEvent.java:
package com.jbridge.event;
import com.jbridge.file.R;
import com.jbridge.service.FileService;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class FileButtonOnClickEvent implements OnClickListener {
// 通过activity获取其他控件
private Activity activity;
// 通过FileService读写文件
private FileService fileService;
// 打印信息用的标签
private static final String TAG = "FileButtonOnClickEvent";
public FileButtonOnClickEvent(Activity activity) {
this.activity = activity;
this.fileService = new FileService(activity);
}
public void onClick(View v) {
Button button = (Button) v;
switch (button.getId()) {
case R.id.bt_save:
// 获取文件名
EditText etFileNameS = (EditText) this.activity
.findViewById(R.id.et_file_name);
String fileNameS = etFileNameS.getText().toString();
// 获取文件内容
EditText etFileConS = (EditText) this.activity
.findViewById(R.id.et_file_content);
String fileContentS = etFileConS.getText().toString();
// 保存
try {
this.fileService.save(fileNameS, fileContentS);
// 在窗口中显示一个特效信息框
Toast.makeText(this.activity, R.string.file_save_success,
Toast.LENGTH_LONG).show();
Log.i(TAG, "save file success!");
} catch (Exception e) {
Toast.makeText(this.activity, R.string.file_save_failed,
Toast.LENGTH_LONG).show();
Log.e(TAG, e.toString());
}
break;
case R.id.bt_read:
// 获取文件名
EditText etFileNameR = (EditText) this.activity
.findViewById(R.id.et_file_name);
String fileNameR = etFileNameR.getText().toString();
// 读取文件
try {
String fielContentR = this.fileService.readFile(fileNameR);
EditText etFileConR = (EditText) this.activity
.findViewById(R.id.et_file_content);
etFileConR.setText(fielContentR);
Log.i(TAG, "read file success!");
} catch (Exception e) {
Toast.makeText(this.activity, R.string.file_read_failed,
Toast.LENGTH_LONG).show();
Log.e(TAG, e.toString());
}
break;
default:
break;
}
}
}
public void saveAppend(String filename, String content) throws Exception{// ctrl+shift+y / x
FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_APPEND);
outStream.write(content.getBytes());
outStream.close();
}
public void saveReadable(String filename, String content) throws Exception{// ctrl+shift+y / x
FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_READABLE);
outStream.write(content.getBytes());
outStream.close();
}
public void saveWriteable(String filename, String content) throws Exception{// ctrl+shift+y / x
FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_WRITEABLE);
outStream.write(content.getBytes());
outStream.close();
}
public void saveRW(String filename, String content) throws Exception{
FileOutputStream outStream = context.openFileOutput(filename,
Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE);
outStream.write(content.getBytes());
outStream.close();
}
public void savePRW(String filename, String content) throws Exception{
FileOutputStream outStream = context.openFileOutput(filename,
Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE+Context.MODE_APPEND);
outStream.write(content.getBytes());
outStream.close();
}
public String readFile(String filename) throws Exception{
FileInputStream inStream = context.openFileInput(filename);
byte[] data = readData(inStream);//オテオスチヒホトシ�トカ�ニハ�ン
return new String(data);
}
private byte[] readData(FileInputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len = inStream.read(buffer))!= -1){
outStream.write(buffer, 0, len);
}
outStream.close();
inStream.close();
return outStream.toByteArray();
}
}
Android文件的读写的更多相关文章
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- Android - 文件读写操作 总结
在android中的文件放在不同位置,它们的读取方式也有一些不同. 本文对android中对资源文件的读取.数据区文件的读取.SD卡文件的读取及RandomAccessFile的方式和方法进行了整理. ...
- android报错及解决2--Sdcard进行文件的读写操作报的异常
报错描述: 对Sdcard进行文件的读写操作的时候,报java.io.FileNotFoundException: /sdcard/testsd.txt (Permission denied),在往S ...
- Android开发进阶:如何读写Android文件
Android主要有四大主要组件组成:Activity.ContentProvider.Service.Intent组成.Android文件的运行主要需要读写四大组件的文件.本文将介绍如何读写Andr ...
- Android中对手机文件进行读写
参考张泽华视频 (一)读写手机内存卡中的文件 对手机中的文件进行读写操作,或者新增一个文件时,可直接使用openFileOutput / openFileInput 得到文件的输出.输入流. Fi ...
- Android中对手机文件进行读写 分类: H1_ANDROID 2013-10-23 22:48 512人阅读 评论(0) 收藏
参考张泽华视频 (一)读写手机内存卡中的文件 对手机中的文件进行读写操作,或者新增一个文件时,可直接使用openFileOutput / openFileInput 得到文件的输出.输入流. Fi ...
- Android 对 properties文件的读写操作
-. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...
- android使用POI读写word doc文件
目录 1 读word doc文件 1.1 通过WordExtractor读文件 1.2 通过HWPFDocument读文件 2 写word doc文件 Apache p ...
- android: 文件存储
数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑 关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在 存储设备中的数据是处于持久状态的,持久化 ...
随机推荐
- shell脚本用crontab执行和手动执行结果不一致
加上 PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin 这行就好了, shell首部用 #!/usr/bin/env bash 这个移植性更 ...
- GIT 如何合并另一个远程Git仓库的文件到本地仓库里某个指定子文件夹并不丢失远程提交记录?
问题背景: 最近在重新整理手中的一个项目,目前该项目分为PC项目,手机项目,某第三方接口项目,第三方接口服务项目和手机项目 因为之前规划的原因,原来的四个项目是分两个解决方案来管理的 ...
- 关于 redis 报错 :JsonParseException: Unrecognized token 'xxx': was expecting ('true', 'false' or 'null')
在使用java 读取redis存储的数据时出现 JsonParseException: Unrecognized token 'xiaoqiang': was expecting ('true', ...
- mysql设置允许外网访问
1.设置mysql服务允许外网访问 修改mysql的配置文件,有的是my.ini,有的是my.cnf[linux],找到bind-address变量,这个值默认是127.0.0.1,设置为0.0.0. ...
- Solidworks直接打开SWB文件报错怎么办
- message sent to deallocated instance
在XCode的以前版本中,如果遇到了 [代码]c#/cpp/oc代码: 1 message sent to deallocated instance 0x6d564f0 我们可以使用info mall ...
- ios 开发 ping
在win 或 mac系统的终端下都有方便的ping命令来检测网络的连通性! 在iOS上可以使用苹果封装好的工具来开发ping连接测试 SimplePing 下载 1. 主要接口 //初始化一个地址 - ...
- adb remount 失败:remount failed: Operation not permitted
adb remount 失败:remount failed: Operation not permitted 关于ADB的使用,这里再说明下:经常使用命令 adb shell - 登录设备sh ...
- 【Zookeeper】源码分析之持久化(三)之FileTxnSnapLog
一.前言 前面分析了FileSnap,接着继续分析FileTxnSnapLog源码,其封装了TxnLog和SnapShot,其在持久化过程中是一个帮助类. 二.FileTxnSnapLog源码分析 2 ...
- 事件响应的优先级、stopProgapation禁止下层组件响应
cocos2d-js没有完整的鼠标事件处理,这点比js/flash的要差一些,不过凑合着也可以用了. 一般界面编程,可以用显示列表的Node作为监听器的优先级,在上方的会比下方的高优先级. 而coco ...