一、基本概念
在Android应用中保存文件,保存的位置有两处
①手机自带的存储空间,较小(如200M),适合保存一些小文件,Android中保存位置在data/data/应用包名/files目录
②外存储设备如SD卡,较大,适合保存大文件如视频,Android中保存位置在mnt/sdcard目录,androd1.5,android1.6保存在sdcard目录
保存的位置通过android的file explorer视图可以找到
二、例子
- package cn.xy.service;
-
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
-
- import android.content.Context;
- import android.os.Environment;
-
-
-
-
-
-
-
- public class FileService
- {
-
-
-
- private Context context;
-
- public FileService(Context context)
- {
- super();
- this.context = context;
- }
-
-
-
-
-
-
-
- @SuppressWarnings("static-access")
- public void save(String filename, String fileContent) throws Exception
- {
-
- FileOutputStream fos = context.openFileOutput(filename, context.MODE_PRIVATE);
- fos.write(fileContent.getBytes("UTF-8"));
- fos.close();
- }
-
-
-
-
-
-
-
- public void saveInSDCard(String filename, String fileContent) throws Exception
- {
-
- File file = new File(Environment.getExternalStorageDirectory(), filename);
- FileOutputStream fos = new FileOutputStream(file);
- fos.write(fileContent.getBytes("UTF-8"));
- fos.close();
- }
-
-
-
-
-
-
-
-
-
-
- public String read(String filename) throws Exception
- {
- FileInputStream fis = context.openFileInput(filename);
- ByteArrayOutputStream outStream = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int len = 0;
-
- while ((len = fis.read(buffer)) != -1)
- {
-
- outStream.write(buffer, 0, len);
- }
-
- byte[] data = outStream.toByteArray();
- fis.close();
- String result = new String(data, "UTF-8");
- return result;
- }
-
- }
MainActivity
- try
- {
-
- fs.save(filename, fileContent);
- Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_SHORT).show();
-
-
-
- if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
- {
- fs.saveInSDCard(filename, fileContent);
- Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_SHORT).show();
- }
- else
- {
- Toast.makeText(getApplicationContext(), R.string.failsdcard, Toast.LENGTH_SHORT).show();
- }
-
- }
- catch (Exception e)
- {
- Toast.makeText(getApplicationContext(), R.string.fail, Toast.LENGTH_SHORT).show();
- Log.e(tag, e.getMessage());
- }
文件名不带路径,直接输入如xy.txt
对于SD卡的操作,需要在AndroidManifest.xml加入权限
-
- <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
-
-
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
三、一些API
①Environment.getExternalStorageDirectory()获取的路径为mnt/sdcard目录,对于android1.5,1.6的路径是sdcard目录
②Activity中提供了两个API
getCacheDir()获取的路径为data/data/应用包名/cache目录
getFilesDir()获取的路径为data/data/应用包名/files目录
本文转自IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/1076826如需转载请自行联系原作者
woshixuye111