示例的运行效果:
(1)将文件保存到手机空间
核心代码:
<span style="font-size:14px;">/**
* 将文件保存到手机空间中
* @param filename 文件名
* @param content 文件中的内容
* @throws Exception
*/
public void save(String filename, String content) throws Exception {
/**创建一个文件输出流对象,下面方法的第一个参数是文件名称,第二个参数是文件写入的操作模式,以下使用的是私有操作模式。
FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_PRIVATE);
outStream.write(content.getBytes());</span>
<span style="font-size:14px;"><span style="white-space:pre"> </span> outStream.close();
}</span>
(2)将文件保存到SDCard中(一般保存比较大的文件)
<span style="font-size:14px;">/**
* 将文件保存到sd卡中
* @param filename 文件名
* @param content 文件中的内容
* @throws Exception
*/
public void saveToSDcard(String filename, String content) throws Exception {
File file = new File(Environment.getExternalStorageDirectory(),filename);
FileOutputStream outStream = new FileOutputStream(file);
write(content, outStream);
}</span>
(3)文件的读取
<span style="font-size:14px;">/**
* @param filename 文件名
* @return 读取到的文件中的内容
* @throws Exception
*/
public String read(String filename) throws Exception{
//获取文件输入流对象,
FileInputStream inStream = context.openFileInput(filename);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
/*将文件中的内容读取到一个字节数组中。注意:当文件内容很多时,我们需要读取多次,
这时我们需要加一个判断语句,*/
int len = 0;
while((len=inStream.read(buffer)) != -1){
//将每次读取出来的数据存到内存中,获取数组0-len范围内的数据
outStream.write(buffer,0,len);
}
byte[] data = outStream.toByteArray();
return new String(data);
}</span>
(4)文件的四种操作模式
将文件保存到手机内存中时,有四种操作模式。
Context.MODE_PRIVATE:创建出来的文件只能被本应用访问,写入文件的内容会覆盖原有文件。
Context.MODE_APPEND模式:会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE模式:表示当前文件可以被其他应用读取
Context.MODE_WORLD_WRITEABLE模式:表示当前文件可以被其他应用写入
最后要注意要在AndroidManifest.xml中加入权限:
<span style="font-size:14px;"><!-- 在SDCard中创建与删除文件权限 -->
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 在SDCard中写入数据权限 -->
<uses-permission </span>
<span style="font-size:14px;"> android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></span>