`
237253995
  • 浏览: 23188 次
  • 性别: 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();
			}

 

分享到:
评论

相关推荐

    android中文件的保存与读取

    该压缩包中含有两个android工程:file和other。file中主要讲述了对文件的保存与读取的功能,other主要用来测试文件保存的四种操作模式。

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

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

    Paragon APFS for Windows苹果apfs文件读取工具.rar

    也叫苹果文件系统,单个分区支持9百亿亿文件,具有动态存储、克隆、快照、磁盘加密、崩溃防护等现代化特性)的apfs文件读取工具,支持在macOS 10.15 Catalina中创建的APFS卷和检测由FileVault加密的卷,用户可以查看...

    c 文件写入和读取工具类

    然后,代码再次使用fopen函数以读取模式("r")打开同一个文件,并使用fgets函数从文件中读取内容,最后将其打印到控制台。每次操作完成后,都使用fclose函数关闭文件。 适用人群: 该代码示例适合有一定C语言基础...

    基于Java的设计模式大作业绘图系统【六种设计模式+文档】.zip

    工具栏包括铅笔,画刷,取色器,喷枪,橡皮,直线,多边形,矩形,椭圆,圆角矩形,打字等工具,可以通过颜色面板进行画笔颜色选择,提供撤销和重做操作,实现图片保存,读取等功能。 本系统采用目前流行的设计模式...

    linux文件IO操作源码

    文件 I/O(Input/Output)是指对计算机中的文件进行读取和写入的操作。在编程中,文件 I/O 是一种常见的操作,用于读取和写入文件中的数据。 文件 I/O 涉及两个主要的概念:输入和输出。输入是指从文件中读取数据到...

    读SAM文件三个方法(下载)

    能从系统中抽出SAM文件,或是读取其它某些用标准方法无法成功访问的文件显然是件不错的事情。比如说当用标志dwShareMode = 0打开文件时,其它进程就不能对它进行访问了。一个很好的例子就是网络寻呼机程序Miranda。...

    设计模式课程设计---使用6个不同的设计模式完成绘图系统(java)

    工具栏包括铅笔,画刷,取色器,喷枪,橡皮,直线,多边形,矩形,椭圆,圆角矩形,打字等工具,可以通过颜色面板进行画笔颜色选择,提供撤销和重做操作,实现图片保存,读取等功能。 运用到的设计模式有备忘录模式...

    使用文件流操作文本文件.docx

    使用文件流操作文本文件是编程中的基础任务之一,它涉及打开文件、读取或写入数据、以及关闭文件等步骤。在Python中,文件操作通常使用内置的open()函数来实现,该函数返回一个文件对象,该对象具有用于读写文件的...

    Android学习之文件存储读取

    前言 相信大家都知道知道,在AndroidOS中,提供了五中数据存储方式,分别是:ContentProvider存储、文件存储、SharedPreference...我们在学Java的时候都知道,Java中的IO操作来进行文件的保存和读取,Android是基于Linu

    在Python程序中进行文件读取和写入操作的教程

    现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件...

    2019-6-21文件操作、堆.md.pdf

    C语言初学,文件操作,解释了文件保存与读取中的二进制模式与文本模式的区别

    图片保存能手批量保存网页图片

    23)8.2支持增强功能配置文件的保存与读取,支持全屏截图,修正一些错误 24)8.3支持网页背景图片的获取 25)8.4修改8.3第一次使用没有设置存盘目录不能存盘的问题 26)8.5增强网址生成器, 支持360浏览器的超强安全模式...

    U盘自动无提示读取保存内容的VC源码

    实时检测计算机中插入的U盘,并在静默模式下,根据程序中设定的类别,自动读取U盘中的图片,文档等内容,放到计算机某一目录下。

    C语言-文件-知识要点.pdf

    "C语言文件处理知识要点"是一份关于C语言文件处理的详细知识资源,涵盖了C语言中与文件操作相关的重要概念、技巧和用法。文件处理在编程中是一个基础且关键的部分,能够帮助开发者读取、写入和操作各种类型的文件,...

    解决POI事件驱动模式读取不到Java代码创建的Excel表格数据问题

    使用POI官网上的事件驱动模式的示例方法,读取单sheet的Excel表格文件(.xlsx),Microsoft Excel和WPS Excel创建的表格文件可以正常读取数据,但是java代码创建的表格文件(不使用软件打开并保存)却读取不到数据。...

    c++课程大作业,基于c++与QT的俄罗斯方块游戏源代码+项目文档,支持多玩家存档的切换,任意游戏记录的读取和保存

    支持多玩家存档的切换,任意游戏记录的读取和保存。提供游戏介绍页面,和排行榜功能,使用了独特的PTT(潜力值)积分算法以确保计分合理性。独创的日/夜间模式切换能够让游戏画面更加美观。 游戏数据结构: 对主体游戏...

    DISKGEN硬盘分区及数据恢复软件

     5、支持EXT2/EXT3文件系统的文件读取操作。支持Linux LVM2磁盘管理方式;  6、可以快速格式化FAT12、FAT16、FAT32、NTFS分区。格式化时可设定簇大小、支持NTFS文件系统的压缩属性;  7、可浏览包括隐藏分区在内...

    MFC文件操作

     让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件...

    PHP 读取大文件的X行到Y行内容的实现代码

    需要读取一个文件的几行内容,但是文件比较大,所以研究了下php读取大文件的几行内容的方法,写了一个方法,代码如下(加了注释): 缓存文件如果能够保存在一行, 而利用算法读取指定的行数, 自然会比全部读出来挑选要...

Global site tag (gtag.js) - Google Analytics