`
237253995
  • 浏览: 24055 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

文件的保存、读取与操作模式

 
阅读更多

 

SharedPreferences的四种操作模式:
Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE
 
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.

 

 

 

通用操作类。

  注意,如果写入SD卡,需要先注册权限:

  

  <!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

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 {
	private Context context;
	
	public FileService(Context context) {
		this.context = context;
	}

	public void saveToSDCard(String filename, String content)throws Exception {
		File file = new File(Environment.getExternalStorageDirectory(), filename);
		FileOutputStream outStream = new FileOutputStream(file);
		outStream.write(content.getBytes());
		outStream.close();
	}
	/**
	 * 保存文件
	 * @param filename 文件名称
	 * @param content 文件内容
	 */
	public void save(String filename, String content) throws Exception {
		//私有操作模式:创建出来的文件只能被本应用访问,其它应用无法访问该文件,另外采用私有操作模式创建的文件,写入文件中的内容会覆盖原文件的内容
		FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_PRIVATE);
		outStream.write(content.getBytes());
		outStream.close();
	}
	
	/**
	 * 保存文件
	 * @param filename 文件名称
	 * @param content 文件内容
	 */
	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();
	}
	
	/**
	 * 保存文件
	 * @param filename 文件名称
	 * @param content 文件内容
	 */
	public void saveReadable(String filename, String content) throws Exception {
		
		FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_READABLE);
		outStream.write(content.getBytes());
		outStream.close();
	}
	
	/**
	 * 保存文件
	 * @param filename 文件名称
	 * @param content 文件内容
	 */
	public void saveWriteable(String filename, String content) throws Exception {
		
		FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_WRITEABLE);
		outStream.write(content.getBytes());
		outStream.close();
	}
	
	/**
	 * 保存文件
	 * @param filename 文件名称
	 * @param content 文件内容
	 */
	public void saveRW(String filename, String content) throws Exception {
		
		FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_WRITEABLE + Context.MODE_WORLD_READABLE);
		outStream.write(content.getBytes());
		outStream.close();
	}
	
	/**
	 * 读取文件内容
	 * @param filename 文件名称
	 * @return 文件内容
	 * @throws Exception
	 */
	public String read(String filename) throws Exception {
		FileInputStream inStream = context.openFileInput(filename);
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int len = 0;
		while((len = inStream.read(buffer)) != -1){
			outStream.write(buffer, 0, len);
		}
		byte[] data = outStream.toByteArray();
		return new String(data);
	}

}

 

使用方法:

FileService service = new FileService(getApplicationContext());
			try {
				//判断SDCard是否存在,并且可以读写
				if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
					service.saveToSDCard(filename, content);
					Toast.makeText(getApplicationContext(), R.string.success, 1).show();
				}else{
					Toast.makeText(getApplicationContext(), R.string.sdcarderror, 1).show();
				}				
			} catch (Exception e) {
				Toast.makeText(getApplicationContext(), R.string.fail, 1).show();
				e.printStackTrace();
			}

 

分享到:
评论

相关推荐

    读写文件读取文件操作读取文件操作读取文件操作读取文件操作

    在IT领域,文件读写是基础且至关重要的操作,它涉及到程序与数据的交互,无论是存储用户输入,保存程序状态,还是处理数据,都离不开文件的读取和写入。以下将详细介绍关于“读取文件操作”的核心知识点,并结合可能...

    android txt文件保存读取操作

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

    bmp位图文件的读取与保存.rar_bmp_bmp save_c bmp_保存 bmp_文件保存bmp

    本主题将深入探讨如何在C语言环境下读取和保存BMP文件。 BMP文件结构主要由三个部分组成:文件头、信息头和像素数据。文件头包括文件类型标识、文件大小、保留字段和偏移量,用于指示图像数据在文件中的位置。信息...

    android中文件的保存与读取

    在Android系统中,文件的保存和读取是应用程序处理数据的基本操作。Android提供了多种方法来存储数据,包括内部存储、外部存储以及SQLite数据库等。在这个主题中,我们将重点关注通过文件系统进行数据存取的方法。 ...

    位图文件读取、修改、保存

    这些库封装了位图文件的读取、修改和保存操作,使开发者能更专注于图像处理算法,而不是底层细节。 **位图与其他图像格式** 位图并不是唯一的图像格式,JPEG、PNG、GIF等也是常见的图像文件格式。它们各有优缺点,...

    数据流形式保存读取文本形式文档

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出以下关于如何使用C#进行文本文件的数据流形式保存与读取的相关知识点。 ### 一、文本文件处理基础 #### 1.1 文件操作类简介 在C#中,处理文件通常会...

    读取Tiff文件中CMYK色彩模式存储的图像数据,并转换为RGB色彩模式

    本主题将深入探讨如何读取使用CMYK色彩模式存储的Tiff文件中的图像数据,并将其转换为更常见的RGB色彩模式。 TIFF(Tagged Image File Format)是一种灵活的位图图像格式,广泛用于印刷和扫描领域,因为它支持多种...

    matlab读取hdf文件,保存为nc文件.zip

    本教程将详细介绍如何使用MATLAB读取HDF文件,对图像进行处理,然后将结果保存为NC文件。 1. **读取HDF文件**: MATLAB提供了`hdfread`函数来读取HDF文件。例如,若有一个名为`data.hdf`的HDF文件,且我们需要读取...

    android读取和保存GBK编码的TXT文档

    在Android平台上,处理GBK编码的TXT文档涉及到对字符编码的理解以及使用适当的IO流进行文件操作。GBK编码是一种在中国广泛使用的汉字编码标准,包含了大量中文字符,对于处理中文文本非常重要。以下将详细介绍如何在...

    简单图像读取、保存程序

    总结来说,"简单图像读取、保存程序"是一个基础的图像处理示例,涵盖了BMP文件的读取、显示、保存以及可能的大小调整操作。对于初学者来说,这是一个很好的起点,可以帮助他们理解图像处理的基本概念和技术,为...

    外观模式案例(基础案例)

    某系统需要提供一个文件加密模块,加密流程包括三...现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块。

    C++读取和保存 txt 格式数据文件的方法

    在C++编程中,读取和保存txt格式的数据文件是一项基本技能,对于处理文本数据尤其重要。本教程将深入探讨如何使用C++实现这一功能,让你轻松掌握这一基础操作。 首先,我们需要理解C++中与文件操作相关的库,主要是...

    mfc中读取编辑框数据并保存

    ### MFC中读取编辑框数据并保存至TXT文档 #### 概述 在MFC(Microsoft Foundation Classes)开发环境中,经常会遇到需要读取用户输入的数据,并将其保存到文件中的需求。本文将详细介绍如何在MFC中实现从编辑框(即`...

    Oralce 保存与读取Blob类型文件

    本文将深入探讨如何在Oracle中保存与读取Blob类型的文件,这一过程涉及到数据库操作、流处理以及异常管理,是IT行业中数据库应用的重要组成部分。 ### 一、保存Blob类型文件到Oracle数据库 #### 代码解析: 1. **...

    WPF 操作批量读取Raw文件

    在处理“WPF操作批量读取Raw文件”的主题时,我们聚焦于如何利用WPF技术来高效地管理和展示由工业设备生成的Raw格式数据文件。Raw文件通常包含未经处理的图像传感器数据,具有高度的细节和灵活性,但需要特定的处理...

    TwinCAT 3配方数据的保存及读取-20210312.zip

    本篇将深入探讨“TwinCAT 3配方数据的保存及读取”这一主题,基于提供的文件名,我们可以理解这涉及到如何在TwinCAT 3环境中管理和操作配方数据。 首先,让我们了解一下什么是配方数据。在制造业中,配方通常指的是...

    Android----文件的保存与读取

    在Android平台上,文件的保存与读取是移动应用开发中不可或缺的部分。无论是用户数据的持久化存储、资源文件的管理还是日志记录,都离不开文件操作。以下将详细讲解Android中如何进行文件的保存和读取。 首先,...

    读取mnist数据集并保存成图片代码

    在本文中,我们将探讨如何从二进制文件中读取MNIST数据集,并将其转换为图片格式进行保存。 首先,MNIST数据集的二进制文件通常分为两个部分:一个是图像文件(例如,`train-images-idx3-ubyte`和`t10k-images-idx3...

    readlas_XYZI_txt.zip_Python支持las_las文件保存_python 读las文件_xyzi 点云格式

    在这个例子中,`liblas.File`对象的`mode='r'`参数表示以读取模式打开文件,然后通过迭代器遍历文件中的每个点,获取其XYZ坐标和强度(Intensity)信息。 保存XYZI点云数据到新的LAS文件则需要用到`liblas`的写入...

    本代码使用Qt读取bin文件中的数据

    #### 一、Qt与Bin文件操作简介 在软件开发过程中,二进制(bin)文件是一种常见的数据存储格式,它能够高效地存储各种类型的数据,包括但不限于文本、图像、音频等。Qt作为一款跨平台的应用程序开发框架,提供了...

Global site tag (gtag.js) - Google Analytics