Android编程之文件操作



    Android中存储大量数据时,可采用本地文件的方式.Android操作文件的方式同样适用java的io操作来完成.Android的文件可分为普通文件、静态文件和SDCard文件。

  • 普通文件是指Android程序通过文件操作,存放在系统中的文件,这种类型的文件可以通过以下的方法来操作:

1.写文件

	FileOutputStream out = openFileOutput("info1.txt", MODE_PRIVATE);
			String content = contentEt.getText().toString();
			byte[] bytes = content.getBytes();
			out.write(bytes);
			out.close();
首先声明一个文件输出流,用来写入数据,可以使用android系统提供的openFileOutput来获取该输出流,获取输出流时需指明输出流对应的文件名称,以及该文件的使用模式.使用模式分为MODE_APPEND即向文件尾写入数据、MODE_PRIVATE即仅打开文件可写入数据、MODE_WORLD_READABLE所有程序均可读该文件数据、MODE_WORLD_WRITABLE即所有程序均可写入数据。写入数据的使用java的IO操作,在此不进行介绍了.

2.读文件

	FileInputStream in = openFileInput("info1.txt");
			byte[] buffer = new byte[1024];
			in.read(buffer);
			String str = EncodingUtils.getString(buffer, "UTF-8");
			this.contentEt.setText(str.toString());
			in.close();

读文件的方法与写文件的方法类似,首先调用系统提供的openFileInput方法获取文件的输入流,接着使用IO读出数据,读出数据时需注意数据的编码方式.

  • 静态文件或者成嵌入式文件,该文件为程序的一部分,在编写时放入程序的资源目录中,程序编译时会将改文件,作为程序的一部分一起编译,该文件一般存放在res/raw文件夹下,文件的名称可以通过R.raw.fileName来访问。该类型文件的读取方式如下:InputStream in = getResources().openRawResource(R.raw.test);
  • 
    
    		InputStream in = getResources().openRawResource(R.raw.test);
    		byte[] buffer = new byte[1024];
    		try {
    			in.read(buffer);
    			String content = EncodingUtils.getString(buffer, "UTF-8");
    			contentEt.setText(content);
    			in.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    文件的读取方式,与普通文件有点区别,首先调用getResource()方法获取程序资源,然后通过openRawResource()方法打开指定的嵌入文件资源,接着文件的读取工作与上类似,不再赘述。
  • SDCard文件是指存放在SD卡上的文件,进行SD卡操作前,请确保已安装SD卡且保证已配置允许对SD卡进行操作.对SD开的权限配置在文件AndroidManifest.xml中,需写入一下代码:
     	<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
        	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    在程序中操作SD卡前,也需判断是否已安装SD卡,判断的方法如下:
    if(Environment.getExternalStorageDirectory().equals(Environment.MEDIA_MOUNTED)){……}
    使用Environment的getExteralStorageDirectory()获取的值与Environment的MEDIA_MOUNTED进行比较,如果相同,则说明支持SD卡操作,否则不能进行SD开操作。向SD中写入文件数据的代码如下:
    		File sdcDir = Environment.getExternalStorageDirectory();
    		File file = new File(sdcDir,"info.txt");
    		try {
    			FileOutputStream out = new FileOutputStream(file);
    			String content = contentEt.getText().toString();
    			out.write(content.getBytes());
    			out.close();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    首先获取SD卡的目录文件,接着获取SD卡中指定的文件,获取文件后,就可以通过java的IO操作,对其进行读写了,读数据的方法与上类似,代码如下:
    		File sdcDir = Environment.getExternalStorageDirectory();
    		File file = new File(sdcDir,"info.txt");
    		FileInputStream in;
    		try {
    			in = new FileInputStream(file);
    			byte[] buffer = new byte[1024];
    			in.read(buffer);
    			String str = EncodingUtils.getString(buffer, "UTF-8");
    			this.contentEt.setText(str.toString());
    			in.close();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
android文件架构详解 cache : 是缓存临时文件夹,据说是除了T-mobile的OTA更新外,别无用处。 红色标记的两个文件是debug模式下产生的 data : 存放用户安装的软件以及各种数据。 default.prop : 默认配置文件 dev : 设备节点文件的存放地 etc : 指向 /system/etc ,配置文件存放目录 init : 系统启动到文件系统的时候第一个运行的程序。 init.goldfish.rc : 初始化文件 init.rc : 初始化文件 proc : /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。 root : 为空 。 sbin: 只放了一个用於调试的adbd程序 sdcard: 是SD卡中的FAT32文件系统挂载的目录 sqlite_stmt_journals: 一个根目录下的tmpfs文件系统,用於存放临时文件数据。 sys : 用於挂载 sysfs文件系统。 在设备模型中,sysfs文件系统用来表示设备的结构.将设备的层次结构形象的反应到用户空间中.用户空间可以修改sysfs中的文件属性来修改设备的属性值 system :系统中的大部分东西都在这各目录下,很重要的一个目录文件 system目录是在Android文件系统占有及其重要的位置,基本上所有的工具和应用程序都在这个目录下,我看来是一个真正的rootfs。他在Android手机中存放在nandflash的 mtd3中,是一个yaffs2文件系统,在启动时被挂载在root的/system目录下,其中包含有: # ls -a -l /system drwxr-xr-x root 208 1970-01-01 08:00 xbin drwxr-xr-x root root 1970-01-01 08:00 modules drwxr-xr-x root root 2010-06-23 09:39 framework drwxr-xr-x root root 2010-06-23 09:39 fonts drwxr-xr-x root root 2010-06-23 09:39 etc -rw-r--r-- root root 2197 2010-06-23 09:39 build.prop drwxr-xr-x root root 2010-06-23 09:39 media drwxr-xr-x root shell 2010-06-23 09:39 bin drwxr-xr-x root root 2010-06-23 09:39 usr drwxr-xr-x root root 2010-06-23 09:39 app drwxr-xr-x root root 2010-06-23 09:39 lost+found drwxr-xr-x root root 2010-06-23 09:39 lib drwxr-xr-x root root 2010-06-23 09:39 sd -rw-r--r-- root root 1452010-06-23 09:39 init.rc # xbin :下放了很多系统管理工具,这些工具不是到toolbox的链接,每个都是可执行程序。如果你看到这些命令你会发现他们根本不常用,他们都是为系统管理员准备的,是一些系统管理和配置工具。这个文件夹的作用相当於标准Linux文件系统中的 /sbin。 modules:使用来存放内核模块(主要是fs和net)和模块配置文件的地方。 framework: 是JAVA平台的一些核心文件,属於JAVA平台系统框架文件。里面的文件都是.jar和.odex文件。 备注:什么是odex文件? odex是被优化过的JAVA程序文件,体积通常是.jar的4倍左右。执行效率比.jar高。 fonts :字体库文件的存放目录。 etc :这里存放了系统中几乎所有的配置文件,根目录下的/etc就链结於此。 build.prop :是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件。 media :里面主要是存放了系统的铃声的,分为 notifications(通知)、ui(界面)、alarms(警告)和ringtones(铃声),里面都是.ogg音频文件。 bin :是存放用户常用的工具程序的,其中大部分是到toolbox的链接(类似嵌入式Linux中的busybox)。toolbox应该是 google简化版的busybox。 usr :用户的配置文件,如键盘布局、共享、时区文件等等。您可以cat 来看看。 app :存放的是Android系统自带的JAVA应用程序。 lost+found :yaffs文件系统固有的,类似回收站的文件夹,只有是yaffs文件系统都会有。 lib :存放几乎所有的共享库(.so)文件。 sd :SD卡中的EXT2分区的挂载目录 init.rc :一个初始化脚本,用於将/system/modules和/system/xbin挂载为cramfs,避免系统被无意破坏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值