【Android数据存储】- File
个人学习整理。如有不足之处,请不吝不吝赐教。
转载请注明:@CSU-Max
读写本应用程序数据目录中的文件
中提供了 openFileInput(String fileName) 和 openFileOutput(String
fileName, int mode) 两个方法来读取本应用程序数据目录中的文件和向其写入。
打开文件输入流
openFileOutput(String fileName, int mode) 打开文件输出流
中的參数 mode 指定文件打开的形式:
:该文件的内容能够被其它应用程序读取
: 该文件的内容能够被其它应用程序读和写

package com.example.filedemo; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream; import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; /**
*
* @author CSUMax
* @version 1.0 2014-4-24
*/
public class MainActivity extends Activity { private Button bt_main_in; // 写入文件button
private Button bt_main_out; // 读取文件button
private EditText et_main_in;// 输入文本框
private TextView tv_main_out;// 显示文件内容 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); bt_main_in = (Button) this.findViewById(R.id.bt_main_in);
bt_main_out = (Button) this.findViewById(R.id.bt_main_out);
et_main_in = (EditText) this.findViewById(R.id.et_main_in);
tv_main_out = (TextView) this.findViewById(R.id.tv_main_out); // 点击button将输入框中的内容写到文件里
bt_main_in.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
String fileName = "demo.txt";
String text = et_main_in.getText().toString();
writeToFile(text, fileName);
et_main_in.setText("");
}
}); // 点击button将文件里内容读取出来显示在文本框中
bt_main_out.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
String fileName = "demo.txt";
tv_main_out.setText(readFromFile(fileName));
}
}); } /**
* 读取文件
*
* @param fileName
* @return
*/
public String readFromFile(String fileName) { try {
FileInputStream fis = openFileInput(fileName);
byte[] bytes = new byte[1024];
StringBuffer sb = new StringBuffer();
int i = 0;
i = fis.read(bytes);
if (i > 0) {
sb.append(new String(bytes, 0, i));
}
return sb.toString(); } catch (Exception e) {
e.printStackTrace();
} return null;
} /**
* 写入文件
*
* @param text
* 写入的内容
* @param fileName
* 目标文件的文件名称
*/
public void writeToFile(String text, String fileName) {
try {
// MODE_APPEND模式写入。即追加模式
FileOutputStream fos = openFileOutput(fileName, MODE_APPEND);
PrintStream ps = new PrintStream(fos);
ps.println(text);
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
} }
看到,例如以下图所看到的(因为无关文件较多,故分开截成两幅图了):
读取资源文件里的文件

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3N1X21heA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
public class ReadFileUtil {
public static String readFromRaw(Context context, int id) {
String str = "";
try {
// 得到输入流
InputStream is = context.getResources().openRawResource(id);
int length = is.available();
byte[] bytes = new byte[length];
int i = 0;
i = is.read(bytes);
if (i > 0) {
// 设置编码
str = EncodingUtils.getString(bytes, "UTF-8");
}
is.close();
return str;
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
}
public class ReaderTest extends AndroidTestCase {
private static final String TAG = "ReaderTest";
public void testReadFromRaw() {
Log.i(TAG, "---------------");
String str = "Failed";
str = ReadFileUtil.readFromRaw(getContext(), R.raw.demo);
Log.i(TAG, "========>" + str + "<========");
}
}
。
读写 SD 卡上的文件
Explorer 视图中向/mnt/sdcard/文件夹下加入之前的 demo.txt 文件。如今试着读取该文件里信息并向当中写入信息。

public class ReadFileUtil {
public static String readFromSdcard(String fileName) {
String str = "";
try {
FileInputStream fis = new FileInputStream(fileName);
int length = fis.available();
byte[] bytes = new byte[length];
int i = 0;
i = fis.read(bytes);
if (i > 0) {
// 设置编码
str = EncodingUtils.getString(bytes, "UTF-8");
}
fis.close();
return str;
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
/**
* --注意向SD卡中的文件写入信息时,要在AndroidManifest.xml文件里增加对应的权限--
*/
public static void writeToSdcard(String text, String fileName){
try {
//构造方法的第二个參数表示追加模式
FileOutputStream fos = new FileOutputStream(fileName, true);
byte[] bytes = text.getBytes();
fos.write(bytes);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class ReaderTest extends AndroidTestCase {
private static final String TAG = "ReaderTest";
public void testReadFromSdcard() {
Log.i(TAG, "---------------");
String str = "Failed";
str = ReadFileUtil.readFromSdcard("/mnt/sdcard/demo.txt");
Log.i(TAG, "========>" + str + "<========");
}
public void testWriteToSdcard() {
Log.i(TAG, "---------------");
String text = " Max ";
ReadFileUtil.writeToSdcard(text, "/mnt/sdcard/demo.txt");
}
}
。而读写 SD 卡中的文件须要使用 FileInputStrea 和 FileOutputStream 。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
***************************************************************************
* 转载请注明出处: @CSU-Max http://blog.csdn.net/csu_max
*
***************************************************************************
【Android数据存储】- File的更多相关文章
- Android数据存储:File
Android数据存储之File Files:它通过FileInputStream和FileOuputStream对文件进行操作.但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写 ...
- 10、Android数据存储
课程目标: 掌握Android中数据存储的几种方式 熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能 熟练使用SQLite3来存储数据 ...
- Android - 数据存储 -存储文件
Android使用的文件系统和其他平台的基本磁盘的文件系统很相似.这里将要介绍如何使用File API在Android文件系统中读写文件. File对象适合按顺序读写大量的数据.例如,适合图片文件或者 ...
- Android数据存储:SDCard
Android数据存储之SDCard 0.获取sd卡路径. 1.讲述 Environment 类. 2.讲述 StatFs 类. 3.完整例子读取 SDCard 内存 0.获取sd卡路径 方法一: p ...
- Android数据存储:Shared Preferences
Android数据存储之SharedPreferences 在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上, Android 为数据存储提供了如下几种方式:1 ...
- 【Android开发日记】之入门篇(七)——Android数据存储(上)
在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...
- 【Android开发日记】之入门篇(八)——Android数据存储(下)
废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基 ...
- Android数据存储之SQLite数据库
Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...
- Android数据存储之Shared Preferences共享数据存储
Android数据存储之Shared Preferences共享数据存储 在Android中一共提供了4种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些 ...
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
随机推荐
- 开源代码生成器,基于mybatis-generator扩展,结合freemarker
git源码地址:https://github.com/JonSnow592622272/free-generator-code 码云gitee源码地址:https://gitee.com/a59262 ...
- ES6 第五章 字符串的新增方法 具体参照 http://es6.ruanyifeng.com
1.FormCodePoint 对象方法 用于从 Unicode 码点返回对应字符,可以识别原来es5不能识别的大于0xFFFF的码点. String.fromCodePoint(0x20BB7) / ...
- windows cmd color颜色设置
上一篇我们讲了去模仿电影黑客的命令界面,其中有关于cmd命令行的颜色设置,下面就细说一下: 1.cmd进入命令 2.color+空格+? 系统会给与相关提示: 3.可以看出颜色是一个十六进制控制 ...
- 《发际线总是和我作队》第八次团队作业:Alpha冲刺 第五天
项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十二 团队作业8:软件测试与Alpha冲刺实验十一 团队作业7:团队项目设计完善&编码 团队名称 发际线总和我作队 作业学 ...
- ios字体简单设定
UILabel *lable = [[UILabel alloc] init]; label.font = [];
- ios7与ios6UI风格区别
http://apple.xdnice.com/content/applenews/2013/0614/142195.html (ios7 ui风格) http://blog.csdn ...
- bzoj 1098 [POI2007] 办公楼 biu
# 解题思路 画画图可以发现,只要是两个点之间没有相互连边,那么就必须将这两个人安排到同一个办公楼内,如图所示: 那,我们可以建立补图,就是先建一张完全图,然后把题目中给出的边都删掉,这就是一张补图, ...
- vue 页面过渡效果
App.vue 模板 <template> <div id="app"> <transition :name="transition&quo ...
- 学习PyQuery库
学习PyQuery库 好了,又是学习的时光啦,今天学习pyquery 来进行网页解析 常规导入模块(PyQuery库中的pyquery类) from pyquery import PyQuery as ...
- python 装饰器模拟京东登陆
要求: 1.三个页面:主页面(home).书店(book).金融页面(finance)2.有两种登陆方式:主页面和书店页面使用京东账户登陆,金融页面使用微信账户登录2.输入:1 ,进入主页面,以此类推 ...