安卓读写SD卡和手机ROM空间里的文件

来源:互联网 发布:vc网络调试助手源代码 编辑:程序博客网 时间:2024/05/17 08:20

安卓上读写文件其实跟JAVA没什么区别,不过在安卓上读写文件还是要注意一些问题的,JAVA的流分为字节流和字符流,字节流读写中文会乱码,所有这里使用字符流读写文件。

名词解释:

sd卡即为你手机插入的扩展内存卡

手机ROM空间即为手机自带的存储空间

手机ROM空间可以理解为电脑的硬盘,而SD卡可以理解为电脑外插的U盘

详细介绍:

要读写文件,首先得开放权限,也就是在AndroidManifest.xml中加入 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

其次我建议建立一个文件辅助类FileHelp.java

代码如下:

importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importandroid.content.Context;
importandroid.os.Environment;
 
publicclassFileHelp{
privateContext context;// 引用的上下文
privatebooleanhasSD=false;// 是否存在SD卡
privateStringSDPATH;// SD的路径
privateStringFILESPATH;// 当前程序的包路径
 
publicStringgetFILESPATH(){
returnFILESPATH;
}
 
publicStringgetSDPATH(){
returnSDPATH;
}
 
publicbooleanhasSD(){
returnhasSD;
}
 
publicFileHelp(Context context){
this.context=context;
hasSD=Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED);
SDPATH=Environment.getExternalStorageDirectory().getPath();
FILESPATH=this.context.getFilesDir().getPath();
 
}
 
// 在SD卡上创建文件
publicFile createSDFile(StringfileName){
File file=newFile(SDPATH+"//"+fileName);
if(!file.exists()){
try{
file.createNewFile();
}catch(IOExceptione){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
returnfile;
}
 
// 从SD上删除指定文件
publicbooleandeleteSDFile(StringfileName){
File file=newFile(SDPATH+"//"+fileName);
if(file==null||!file.exists()||file.isDirectory())
returnfalse;
returnfile.delete();
}
 
// 从SD卡上读取文本文件(使用的是字符流,避免中文乱码)
publicStringreadSDFile(StringfileName){
StringBuffer sb=newStringBuffer();
File file=newFile(SDPATH+"//"+fileName);
if(file.exists()){
try{
BufferedReader br=newBufferedReader(newFileReader(file));
Stringline;
while((line=br.readLine())!=null){
sb.append(line);
}
br.close();
}catch(IOExceptione){
e.printStackTrace();
}
returnsb.toString();
}
return"";
}
 
// 向SD卡中写入文本文件(使用的是字符流,避免中文乱码)
publicbooleanwriteSDFile(Stringdata,StringfileName){
if(hasSD){
File file=newFile(SDPATH+"//"+fileName);
try{
BufferedWriter buf=newBufferedWriter(newFileWriter(file));
buf.write(data);
buf.flush();
buf.close();
returntrue;
}catch(IOExceptione){
e.printStackTrace();
returnfalse;
}
}
returnfalse;
}
}

 

在需要用到的地方,实例化这个辅助类,并调用其中的方法完成文件的读写

注:该辅助类为了简便,只提供了SD卡文件创建,和读写删除操作,如果要对手机ROM空间读写的话,只要将方法体里的“SDPATH”换成“FILESPATH”即可

0 0
原创粉丝点击