Android_文件操作

贴代码,判断文件路径和创建文件和目录:

package com.tjd.sdcardtest;

import java.io.File;
import java.io.IOException;

import android.content.Context;
import android.os.Environment;

public class FileUtil {
	static FileUtil instance;
	/** 简单的无脑式单例 */
	public static FileUtil getInstance() {
		if (instance == null) {
			instance = new FileUtil();
		}
		return instance;
	}
	/** 获取可写的文件路径 */
	public String getFilePath(Context c, String app_dir) {
		String file_dir = "";
		// SD卡是否存在
		boolean isSDCardExist = Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
		// Environment.getExternalStorageDirectory()相当于File file=new File("/sdcard")
		boolean isRootDirExist = Environment.getExternalStorageDirectory().exists();
		if (isSDCardExist && isRootDirExist) {
			file_dir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + app_dir + "/";
		} else {
			// Context.getFilesDir()返回的路劲为/data/data/PACKAGE_NAME/files,其中的包就是我们建立的主Activity所在的包
			file_dir = c.getFilesDir().getAbsolutePath() + "/" + app_dir + "/";
		}
		return file_dir;
	}
	/** 创建File,若目录不存在,则创建目录 */
	public File createFile(String file_dir, String file_name) {
		boolean isSucCreate = false;
		File dir = new File(file_dir);
		if (!dir.exists()) {
			dir.mkdirs();
		}
		File file = new File(file_dir + file_name);
		if (!file.exists()) {
			try {
				isSucCreate = file.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
				return null;
			}
		}
		return isSucCreate ? file : null;
	}
	public boolean isFileExist(String file_dir, String file_name) {
		File file = new File(file_dir + file_name);
		if (!file.exists()) {
			return false;
		} else {
			return true;
		}
	}
}

文件的具体读写操作:

package com.tjd.sdcardtest;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.http.util.EncodingUtils;

import android.content.Context;

/**
 * Android中的文件读写的简单整理
 * 为获取到的InputStream或者OutputStream后的读取和写入做了无脑式提取
 * 注:实际使用需要加入finally,关闭流,等
 */
public class FileWriteRead {
	static FileWriteRead filewr = null;
	public static FileWriteRead getInstance() {
		if (filewr == null) {
			filewr = new FileWriteRead();
		}
		return filewr;
	}
	/**
	 * 读取文件提取的公用部分
	 * 参数:获取到InputStream和需要的结果String
	 */
	public String extractReadSame(InputStream in, String res) throws Exception {
		//得到数据的大小
		int length = in.available();
		byte[] buffer = new byte[length];
		//读取数据
		in.read(buffer);
		//依test.txt的编码类型选择合适的编码,如果不调整会乱码 
		res = EncodingUtils.getString(buffer, "UTF-8");
		//关闭    
		in.close();
		return res;
	}
	/**
	 * 写入文件提取的公用部分
	 * 参数:获取到的FileOutPutStream和需要写入的String
	 */
	public void extractWriteSame(OutputStream fout, String write_str) throws Exception {
		byte[] bytes = write_str.getBytes();
		fout.write(bytes);
		fout.close();
	}
	// 从Raw读取
	public String readFromRaw(int resource, Context c) throws Exception {
		String res = "";
		//得到资源中的Raw数据流
		InputStream in = c.getResources().openRawResource(resource); // resource = R.raw.test;
		res = extractReadSame(in, res);
		return res;
	}
	// 从assets文件读取
	public String readFromAssets(String fileName, Context c) throws Exception {
		String res = "";
		//得到资源中的asset数据流
		InputStream in = c.getResources().getAssets().open(fileName);
		res = extractReadSame(in, res);
		return res;
	}
	// [start]
	// 读写/data/data/<应用程序名>目录上的文件:
	//读数据
	public String readFile(String fileName, Context c) throws Exception {
		String res = "";
		FileInputStream fin = c.openFileInput(fileName);
		res = extractReadSame(fin, res);
		return res;
	}
	// 写数据
	public void writeFile(String fileName, String write_str, Context c) throws Exception {
		FileOutputStream fout = c.openFileOutput(fileName, Context.MODE_PRIVATE);
		extractWriteSame(fout, write_str);
	}
	// [end]
	// [start]
	// 读写SD卡中的文件。也就是/mnt/sdcard/目录下面的文件
	//读SD中的文件
	public String readFileSdcardFile(String fileName) throws Exception {
		String res = "";
		FileInputStream fin = new FileInputStream(fileName);
		res = extractReadSame(fin, res);
		return res;
	}
	//写数据到SD中的文件
	public void writeFileSdcardFile(String fileName, String write_str) throws Exception {
		FileOutputStream fout = new FileOutputStream(fileName);
		extractWriteSame(fout, write_str);
	}
	// [end]
	// [start]
	// 使用File类进行文件的读写
	//读文件
	public String readSDFile(String fileName) throws Exception {
		String res = "";
		File file = new File(fileName);
		FileInputStream fis = new FileInputStream(file);
		res = extractReadSame(fis, res);
		return res;
	}
	//写文件
	public void writeSDFile(String fileName, String write_str) throws Exception {
		File file = new File(fileName);
		FileOutputStream fos = new FileOutputStream(file);
		extractWriteSame(fos, write_str);
	}
	// [end]
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值