用文件進行數據存儲
1.存儲到Android自帶的存儲空間中
Activity提供了openFileOutput()方法可以用於把數據輸出到文件中,具體的實現過程與在J2SE環境中保存數據到文件中是一樣的。
- public class FileService {
- private Context context;
- public FileService(Context context) {
- this.context = context;
- }
- /**
- * 保存文件
- * @param filename 文件名稱
- * @param content 文件內容
- * @throws IOException
- */
- public void save(String filename, String content) throws Exception {
- //利用javaIO實現文件的保存
- FileOutputStream outStream =context.openFileOutput(filename, Context.MODE_PRIVATE);
- outStream.write(content.getBytes());//向文件中寫入數據,將字符串轉換為字節
- outStream.close();
- }
- }
通過Context.openFileOutput(String name,int mode)可以獲取一個文件輸入流
name為文件名,mode為文件模式,有4種模式
輸出流指向路徑為:/data/data/包名/files/
文件模式在Context中有定義常量
MODE_PRIVATE 私有的且覆蓋
MODE_APPEND 私有的且追加
MODE_WORLD_READABLE 其他程序可讀但不可寫
MODE_WORLD_WRITEABLE 其他程序可寫但不可讀
組合模式使用(其他程序可寫也可讀),例如:MODE_WORLD_READABLE + MODE_WORLD_WRITEABLE
2.寫入文件到SD卡
使用Activity的openFileOutput()方法保存文件,文件是存放在手機空間上,一般手機的存儲空間不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。對於像視頻這樣的大文件,我們可以把它存放在SDCard。 SDCard是干什麼的?你可以把它看作是移動硬盤或U盤。
(1).首先要在清單文件中(AndroidManifest.xml)中加入訪問SDCard的權限如下:
- <!-- 在SDCard中創建與刪除文件權限 -->
-
- <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
-
- <!-- 往SDCard寫入數據權限 -->
-
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
(2).判斷用戶是否插入SDCard卡
- //判斷SDCard是否存在
- if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
- service.saveToSDCard(filename,content); //實現保存
- Toast.makeText(getApplicationContext(), R.string.sdsuccess, 1).show();
- }else{
- Toast.makeText(getApplicationContext(), R.string.sdderror, 1).show();
- }
(3).業務層保存操作
- public void saveToSDCard(String filename,String content)throws Exception{
- //Environment.getExternalStorageDirectory()表示找到sdcarf目錄
- File file =new File(Environment.getExternalStorageDirectory(),filename);
- FileOutputStream outStream =new FileOutputStream(file);
- outStream.write(content.getBytes());
- outStream.close();
- }