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

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

名词解释:

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

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

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

详细介绍:

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

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

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

代码如下:

import java . io . BufferedWriter ;
import java . io . File ;
import java . io . FileReader ;
import java . io . FileWriter ;
import java . io . IOException ;
import android . content . Context ;
import android . os . Environment ;
 
public class FileHelp {
private Context  context ; // 引用的上下文
private boolean hasSD = false ; // 是否存在SD卡
private String SDPATH ; // SD的路径
private String FILESPATH ; // 当前程序的包路径
 
public String getFILESPATH ( ) {
return FILESPATH ;
}
 
public String getSDPATH ( ) {
return SDPATH ;
}
 
public boolean hasSD ( ) {
return hasSD ;
}
 
public FileHelp ( Context  context ) {
this . context = context ;
hasSD = Environment . getExternalStorageState ( ) . equals (
android . os . Environment . MEDIA_MOUNTED ) ;
SDPATH = Environment . getExternalStorageDirectory ( ) . getPath ( ) ;
FILESPATH = this . context . getFilesDir ( ) . getPath ( ) ;
 
}
 
// 在SD卡上创建文件
public File  createSDFile ( String fileName ) {
File  file = new File ( SDPATH + "//" + fileName ) ;
if ( ! file . exists ( ) ) {
try {
file . createNewFile ( ) ;
} catch ( IOException e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
}
}
return file ;
}
 
// 从SD上删除指定文件
public boolean deleteSDFile ( String fileName ) {
File  file = new File ( SDPATH + "//" + fileName ) ;
if ( file == null || ! file . exists ( ) || file . isDirectory ( ) )
return false ;
return file . delete ( ) ;
}
 
// 从SD卡上读取文本文件(使用的是字符流,避免中文乱码)
public String readSDFile ( String fileName ) {
StringBuffer  sb = new StringBuffer ( ) ;
File  file = new File ( SDPATH + "//" + fileName ) ;
if ( file . exists ( ) ) {
try {
BufferedReader  br = new BufferedReader ( new FileReader ( file ) ) ;
String line ;
while ( ( line = br . readLine ( ) ) != null ) {
sb . append ( line ) ;
}
br . close ( ) ;
} catch ( IOException e ) {
e . printStackTrace ( ) ;
}
return sb . toString ( ) ;
}
return "" ;
}
 
// 向SD卡中写入文本文件(使用的是字符流,避免中文乱码)
public boolean writeSDFile ( String data , String fileName ) {
if ( hasSD ) {
File  file = new File ( SDPATH + "//" + fileName ) ;
try {
BufferedWriter  buf = new BufferedWriter ( new FileWriter ( file ) ) ;
buf . write ( data ) ;
buf . flush ( ) ;
buf . close ( ) ;
return true ;
} catch ( IOException e ) {
e . printStackTrace ( ) ;
return false ;
}
}
return false ;
}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值