Android 文件读写

关于Android文件的读写有两种方式

一种是将txt文件当成资源文件放在res/raw或则res/asset文件夹下,raw的文件可以通过R.raw.fileName获得,asset下的文件可以通过AssetManager am = getAssets();am.open(“FileName”);来打开文件。但是如果把文件当成资源文件存放的话,只能读不能写。如果要想写入数据的话,就使用第二种方法

第二种方法从sd卡中读写文件,这样首先要向AndroidManifest.xml中加入两条权限消息

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

然后将文件操作封装在一个类中,在这里我把它命名为FileOption,先将代码粘贴如下:

package com.example.littleapplication;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.util.Vector;

import android.os.Environment;
import android.util.Log;

public class FileOption {
	private String fileName;
	private File targetFile;
	private File sdCardDir;
	
	public FileOption(String fileName) throws IOException {
		// TODO Auto-generated constructor stub
		boolean mark = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
		if(mark)
		{
			this.fileName = fileName;
			this.sdCardDir = Environment.getExternalStorageDirectory();
			this.targetFile = new File(this.sdCardDir.getCanonicalPath()+this.fileName);	
			if(this.targetFile.exists()==false)
			{
				this.targetFile.createNewFile();
			}
		}
		else{
			Log.e("SDK", "无内存卡");
		}
	}

		
		
		
	

	public Vector read() throws FileNotFoundException, IOException {
		
		FileInputStream fis = new FileInputStream(this.sdCardDir.getCanonicalPath()+this.fileName);
		BufferedReader br = new BufferedReader(new InputStreamReader(fis));
		Vector res = new Vector();
		String line = null;
		while((line = br.readLine())!=null)
		{
			res.add(line);
		}
		br.close();
		return res;
		// TODO Auto-generated method stub
	}
	public boolean write(String add) throws IOException
	{
		RandomAccessFile raf = new RandomAccessFile(this.targetFile,"rw");
		raf.seek(targetFile.length());
		//换行
		
		raf.write(add.getBytes());
		raf.writeChar('\n');
		raf.close();
		return true;
	}
	/**返回一共有多少条记录
	 * @throws IOException 
	 * @throws FileNotFoundException */
	public int size() throws FileNotFoundException, IOException
	{
		FileInputStream fis = new FileInputStream(this.sdCardDir.getCanonicalPath()+this.fileName);
		BufferedReader br = new BufferedReader(new InputStreamReader(fis));
		String line = null;
		int count = 0;
		while((line = br.readLine())!=null)
		{
			count++;
		}
		//每三行代表一个数据项
		//分别是 id title content data level
		return count/5;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值