贴代码,判断文件路径和创建文件和目录:
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]
}