`
chinrui
  • 浏览: 97353 次
  • 性别: 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 txt文件保存读取操作

    在Android平台上,对TXT文件进行保存和读取是常见的数据持久化操作,尤其适用于存储少量结构化的文本数据。本文将详细讲解如何在Android应用中实现TXT文件的保存和读取功能,以及涉及到的相关知识点。 首先,我们...

    android 保存创建Txt文件 代码程序

    这个场景中,我们关注的重点是如何在Android应用中创建并保存一个TXT文件。以下是实现这一功能的关键知识点: 1. **权限申请**: 在Android 6.0(API级别23)及以上版本,应用需要在运行时请求`WRITE_EXTERNAL_...

    android 选择文件上传至服务器 包含服务器代码

    通过以上步骤,可以实现Android客户端的文件选择和上传功能,并在服务器端成功接收并保存这些文件。为了完善应用,还应考虑用户体验,如显示上传进度、提供取消上传的选项,以及对上传结果的反馈。如果你有任何问题...

    android 视频录制 并保存到本地

    总之,Android视频录制并保存到本地涉及到`MediaRecorder`的使用,文件路径的管理以及权限控制等多个环节。理解这些知识点对于任何Android开发者来说都是必不可少的。通过以上步骤,你可以在自己的应用中实现这一...

    android大文件分段上传

    客户端保存已上传的文件段信息,当重新发起上传时,可以从已上传的最后一个段开始继续。 6. **错误处理与确认**:在整个过程中,客户端和服务器都需要进行错误检测和响应。例如,如果服务器未能正确接收某个文件段...

    Android 保存List数据(SharedPreferences)

    SharedPreferences是Android提供的一种轻量级的数据持久化方式,它以键值对的形式存储数据,并提供了XML文件的读写操作。通常,我们通过`PreferenceManager.getDefaultSharedPreferences(Context)`获取默认的...

    文件复制及进度条 android 文件复制 进度条 progressdialog

    在Android开发中,文件复制和进度条的显示是常见的需求,尤其在移动应用中,用户可能需要将数据从一个位置移动到另一个位置,或者在后台下载文件时展示进度。`ProgressDialog`是Android SDK提供的一种对话框组件,...

    Android 保存文件路径方法

    Android保存文件到本地路径问题 常见路径 例如: application 包名: com.my.company 项目名: chat /data/data == ///data/user/0 getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ ...

    Android 下载图片保存到相册

    在Android平台上,下载图片并保存到用户设备的相册是一项常见的功能。这通常涉及到网络请求、文件操作以及与系统媒体库的交互。以下是对`Android 下载图片保存到相册`这一主题的详细讲解。 首先,我们需要理解...

    android 移植ffmpeg源码 实现rtsp流实时播放及保存成MP4文件可以回放

    在Android平台上实现RTSP流的实时播放以及将流媒体数据保存为MP4文件,通常涉及到多个技术栈的集成,其中包括FFmpeg、Android多媒体框架以及文件处理等。以下是对这个项目中涉及的关键知识点的详细说明: 1. **...

    Android用文件读取保存记录

    Android用文件读取保存记录

    Android 管理日志,所有输出日志保存本地

    便于开发,测试,定位问题。方便查看日志。所有日志保存本地文件,可按日志等级保存,定期删除,文件最长可保存自定义天数,代码中写的3天时间,天 日志文件将会删除。

    Android 安卓管理日志,所有输出日志保存本地

    便于开发,测试,定位问题。方便查看日志。所有日志保存本地文件,可按日志等级保存,定期删除,文件最长可保存自定义天数,代码中写的3天时间,天 日志文件将会删除。

    Android 下载文件Demo

    在Android开发中,下载文件是一项常见的任务,尤其在构建应用时需要从服务器获取资源或更新数据。本"Android 下载文件Demo"旨在演示如何利用字节流进行文件下载操作。在Java和Android中,输入输出流(IO流)是处理...

    android 将assets 下的文件复制到手机内存中

    在Android开发中,有时我们需要将应用内部的资源文件,如配置文件、数据库文件或静态数据等,复制到手机的外部存储(内存或SD卡)以便于应用运行时使用。这个过程通常涉及到Android的文件系统操作和权限管理。下面将...

    Android 上传文件到c# webservice

    解析请求中的各部分,提取文件数据并保存到服务器的指定位置。 8. **错误处理与反馈**: - 在Android客户端,确保捕获可能发生的网络异常,如连接失败、超时或服务器返回的错误状态码。根据不同的错误情况,向用户...

    Android文件上传.rar

    在Android平台上进行文件上传是一项常见的任务,特别是在开发涉及用户交互的应用程序时,如社交媒体应用、云存储服务等。本文将详细解析如何在Android系统中实现文件上传,主要围绕"Android文件上传"这一主题展开,...

    android项目中读取ini配置文件

    在Android应用开发中,有时我们需要将一些系统配置信息存储在外部文件中,以方便管理和更新。在这种情况下,`ini`文件格式是一个常见的选择,因为它的结构简单,易于读写。本文将详细介绍如何在Android项目中读取...

    android保存log方法

    有需要可以看看,动态将想要的数据通过该接口直接写到本地文件

    android上传大文件亲测可用

    `audioRecordTest`可能是一个音频录制测试文件,表明你可能在应用中进行了音频录制并保存了文件。 2. **建立Socket连接**:`socketTest`暗示了使用Socket作为通信协议。在Android中,你可以使用`java.net.Socket`类...

Global site tag (gtag.js) - Google Analytics