`
chinrui
  • 浏览: 99712 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

初涉Android之文件保存

阅读更多

Android文件保存

     一、Android的底层使用Linux内核,文件对文件所有者、与文件所有者同组的其它人、以及其它组的成员分别有可读、可写和可执行三种权限,具体可以参考《Linux私房菜》,当然,学习Android不需要了解这么多啊,在Android中,文件操作大致有四种操作模式,分别是MODE_PRIVATE、MODE_APPEND、MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE等。

 

下面对于四种操作模式进行简单的介绍:

  • MODE_PRIVATE(私有操作模式):创建出来的文件只有本应用能够访问,其它应用不能访问,另外用私有操作模式生成的文件,写入文件的内容会覆盖以前已有的内容
  • MODE_APPEND(追加操作模式):创建出来的文件只有本应用能够访问,其它应用不能访问,另外用追加操作模式生成的文件,写入文件的内容会追加在以前文件的前面
  • MODE_WORLD_READABLE(可读操作模式):创建出来的文件所有应用都能够访问,另外用可读操作模式生成的文件,写入文件的内容会覆盖掉原来的内容,但是不能修改内容
  • MODE_WORLD_WRITEABLE(可写操作模式):创建出来的文件其它应用不能够访问,另外用可写操作模式生成的文件,写入文件的内容会覆盖掉原来的内容,其它应用也可以修改内容
public class FileService {
	private Context context = null;
	private static final String TAG = "FileService";
	
	public FileService(Context context) {
		this.context = context;
	}
	
	/*
	 * 私有操作模式保存文件
	 */
	public void savePrivate(String nameText, String contentText) throws IOException {
		OutputStream out = context.openFileOutput(nameText, Context.MODE_PRIVATE);
		Log.i(TAG,nameText);
		out.write(contentText.getBytes());
		out.close();
	}
	
	/*
	 * 追加操作模式保存文件
	 */
	public void saveAppend(String nameText, String contentText) throws IOException {
		OutputStream out = context.openFileOutput(nameText, Context.MODE_APPEND);
		Log.i(TAG,nameText);
		out.write(contentText.getBytes());
		out.close();
	}
	
	/*
	 * 可读操作模式保存文件
	 */
	public void saveReadable(String nameText, String contentText) throws IOException {
		OutputStream out = context.openFileOutput(nameText, Context.MODE_WORLD_READABLE);
		Log.i(TAG,nameText);
		out.write(contentText.getBytes());
		out.close();
	}
	
	/*
	 * 可写操作模式保存文件
	 */
	public void saveWritable(String nameText, String contentText) throws IOException {
		OutputStream out = context.openFileOutput(nameText, Context.MODE_WORLD_WRITEABLE);
		Log.i(TAG,nameText);
		out.write(contentText.getBytes());
		out.close();
	}
}

 二、文件的读取

读取文件的时候,如果读取文件是当前应用底下的文件可以使用Context对象来获得文件输入流,如果是读取其它目录的文件,自己创建一个文件读取流即可,读取相对比较简单,就不多做介绍。

/**
 * 读取文件内容
 * @param fileName 文件名
 * @return java.lang.String 返回文件内容
 * @throws IOException 抛出的IO流异常
 */
public String read(String fileName) throws IOException {
	InputStream is = context.openFileInput(fileName);
	byte[] buf = new byte[1024];
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	int len = 0;
	while((len = is.read(buf)) != -1) {
		baos.write(buf , 0 , len);
	}
	is.close();
	byte[] res = baos.toByteArray();
	baos.close();
	return new String(res);
}
/**
 * 读取非当前应用底下的文件
 * @return java.lang.String 返回文件内容
 * @throws IOException 抛出IO流异常
 */
public String read() throws IOException {
	String path = PATH + fileName;
	File file = new File(path);
	FileInputStream fis = new FileInputStream(file);
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	byte[] buf = new byte[1024];
	int len = 0;
	while((len = fis.read(buf)) != -1) {
		baos.write(buf , 0 , len);
	}
	byte[] result = baos.toByteArray();
	return new String(result);
}

 

三、保存文件到存储卡(简略介绍)

/**
 * 保存文件到存储卡设备
 * @param name 要保存的文件名
 * @param content 文件内容
 * @throws IOException 抛出IO流异常
 */
public void saveSdcard(String name, String content) throws IOException {
	File file = new File("/mnt/sdcard/" + name);
	FileOutputStream fos = new FileOutputStream(file);
	fos.write(content.getBytes());
	fos.close();
}
分享到:
评论

相关推荐

    Android移动应用开发(第3版)卷1:基础篇

    总之,《Android移动应用开发(第3版)卷1:基础篇》是一本深入浅出的教程,覆盖了Android开发的方方面面,无论你是初涉Android开发还是寻求进阶,都能从中受益匪浅。通过阅读和实践书中的例子,你可以逐步建立起坚实...

    Android手机安全卫士源码

    通过研究这个《Android手机安全卫士源码》,开发者不仅可以提升Android应用开发技能,还能了解到安全软件的设计思路和实现方法,为自己的Android开发之路打下坚实基础。同时,这也是一个实践理论知识、提升问题解决...

    Android日记系统源码数据库的基本操作.zip

    在Android开发中,数据库是应用程序持久化数据的重要方式。这个"Android日记系统源码数据库的基本操作.zip...实际操作这些源码将是一个极好的学习经验,特别是对于那些初涉Android开发和数据库管理的程序员来说。

    基于Android手机的无线视频监控.pdf

    关键词中的“Android操作系统”强调了系统的基础平台,“无线网络”指的是Wi-Fi作为传输媒介,“监控”体现了系统的主要功能,即实时视频监控,“图像”和“视频压缩”则分别指涉到视频数据的采集和传输效率。...

    Delphi 蓝牙 ClBluetooth

    4. ClBluetooth.dsk:这可能是一个工作区文件,保存了开发环境的布局和用户设置。 5. Unit1.fmx:这是 Delphi 中的一个单元(unit)文件,通常包含界面设计和相关的逻辑代码。".fmx" 表示使用 FireMonkey 框架,...

    安卓开发OpenSudoku九宫格数独游戏源码

    本示例项目"OpenSudoku九宫格数独游戏"提供了一个绝佳的学习起点,特别是对于那些初涉安卓应用开发的新手来说。数独游戏,作为一种逻辑推理类游戏,非常适合转化为手机应用,因为它对图形界面和用户交互的要求相对...

    flutter-starter-kit:Flutter入门套件(样板)可启动您的下一个Android和iOS应用

    使用BLoC模式的Flutter入门...与Laravel中的控制器有关) 模型-保存所有模型(与Laravel中的模型有关) 储存库-保存所有储存库(CRUD操作) 回应-保留所有回应utils-保存所有实用程序文件观点-所有保持你的意见/ UI(涉

    SimpleWeather:我的第一个应用

    《简易天气:初涉编程的里程碑》 "SimpleWeather:我的第一个应用",这不仅仅是一个应用的名字,更是每一个编程新手走向成功的起点。这个标题蕴含着开发者初次尝试编程时的兴奋与期待,也是他们亲手打造出的第一个...

Global site tag (gtag.js) - Google Analytics