步骤如下:
1.在AndroidManifest.xml中添加如下配置(读写SD卡的权限)
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2.进行读写操作时首先判断手机是否插入SD卡并且应用程序具有读写SD卡的权限。
Environment.getExternalStorageState()
.equals(Environment.MEDIA_MOUNTED)
此方法作为判断条件,结果要求返回true。
3.获取外部存储器,也就是SD卡的目录
File sdCardDir = Environment.getExternalStorageDirectory();
4.读写SD卡里的文件
//读取com.lune.io/1.txt文件的内容
private String read(){
try {
//
if(Environment.getExternalStorageState()
.equals(Environment.MEDIA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();
FileInputStream fis = new FileInputStream(sdCardDir
.getCanonicalPath()+FILE_NAME);
BufferedReader br = new BufferedReader(new
InputStreamReader(fis));
StringBuilder sb = new StringBuilder("");
String line = null;
while((line = br.readLine())!=null){
sb.append(line);
}
return sb.toString();
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
其中fis是一个位流,为了转换为字符流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能。
//向com.lune.io/1.txt文件中写入内容
private void write(String content){
try{
//
if(Environment.getExternalStorageState()
.equals(Environment.MEDIA_MOUNTED)){
//获取SD卡目录
File sdCardDir = Environment.getExternalStorageDirectory();
File targetFile = new File(sdCardDir.getCanonicalPath()+FILE_NAME);
//其中"rw"表示以读写的方式来访问该文件
RandomAccessFile raf = new RandomAccessFile(targetFile , "rw");
//设置指针位置为原文件结尾处
raf.seek(targetFile.length());
//写入数据
raf.write(content.getBytes());
raf.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
RandomAccessFile是属于随机读取类,是可以对文件本身的内容直接随机进行操作的,可以在文件的指定位置
读取和写入内容,这在很多时候都是很方便的。
主界面设置的程序和上一篇File存储是一样的,只是读写函数不同,这里不再赘述