1. 程式人生 > >android本地、sd卡儲存物件或集合,以及讀取該物件

android本地、sd卡儲存物件或集合,以及讀取該物件

<!-- 在SDCard中建立與刪除檔案的許可權 -->  
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  
    <!-- 往SDCard寫入資料的許可權 -->  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

儲存

 /** 
     * 將物件儲存到本地 
     * @param context 
     * @param
fileName 檔名 * @param bean 物件 * @return true 儲存成功 */
public boolean writeObjectIntoLocal(Context context,String fileName,T bean){ try { // 通過openFileOutput方法得到一個輸出流,方法引數為建立的檔名(不能有斜槓),操作模式 @SuppressWarnings("deprecation") FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_WORLD_READABLE); ObjectOutputStream oos = new
ObjectOutputStream(fos); oos.writeObject(bean);//寫入 fos.close();//關閉輸入流 oos.close(); return true; } catch (FileNotFoundException e) { e.printStackTrace(); //Toast.makeText(WebviewTencentActivity.this, "出現異常1",Toast.LENGTH_LONG).show();
return false; } catch (IOException e) { e.printStackTrace(); //Toast.makeText(WebviewTencentActivity.this, "出現異常2",Toast.LENGTH_LONG).show(); return false; } } /** * 將物件寫入sd卡 * @param fileName 檔名 * @param bean 物件 * @return true 儲存成功 */ public boolean writObjectIntoSDcard(String fileName,T bean){ if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File sdCardDir = Environment.getExternalStorageDirectory();//獲取sd卡目錄 File sdFile = new File(sdCardDir, fileName); try { FileOutputStream fos = new FileOutputStream(sdFile); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(bean);//寫入 fos.close(); oos.close(); return true; } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } } else { return false; } } /** * 將集合寫入sd卡 * @param fileName 檔名 * @param list 集合 * @return true 儲存成功 */ public boolean writeListIntoSDcard(String fileName,List<T> list){ if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File sdCardDir = Environment.getExternalStorageDirectory();//獲取sd卡目錄 File sdFile = new File(sdCardDir, fileName); try { FileOutputStream fos = new FileOutputStream(sdFile); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(list);//寫入 fos.close(); oos.close(); return true; } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } } else { return false; } } }

讀取

  /** 
     * 讀取本地物件 
     * @param context 
     * @param fielName 檔名 
     * @return 
     */  
    @SuppressWarnings("unchecked")  
    public T readObjectFromLocal(Context context,String fielName){  
        T bean;  
        try {  
            FileInputStream fis = context.openFileInput(fielName);//獲得輸入流    
            ObjectInputStream ois = new ObjectInputStream(fis);  
            bean = (T) ois.readObject();  
            fis.close();  
            ois.close();  
            return bean;  
        } catch (StreamCorruptedException e) {    
            //Toast.makeText(ShareTencentActivity.this,"出現異常3",Toast.LENGTH_LONG).show();//彈出Toast訊息    
            e.printStackTrace();    
            return null;  
        } catch (OptionalDataException e) {    
            //Toast.makeText(ShareTencentActivity.this,"出現異常4",Toast.LENGTH_LONG).show();//彈出Toast訊息    
            e.printStackTrace();  
            return null;  
        } catch (FileNotFoundException e) {    
            //Toast.makeText(ShareTencentActivity.this,"出現異常5",Toast.LENGTH_LONG).show();//彈出Toast訊息    
            e.printStackTrace();    
            return null;  
        } catch (IOException e) {    
            e.printStackTrace();    
            return null;  
        } catch (ClassNotFoundException e) {    
            //Toast.makeText(ShareTencentActivity.this,"出現異常6",Toast.LENGTH_LONG).show();//彈出Toast訊息    
            e.printStackTrace();    
            return null;  
        }    
    }  
    /** 
     * 讀取sd卡物件 
     * @param fileName 檔名 
     * @return 
     */  
    @SuppressWarnings("unchecked")  
    public T readObjectFromSdCard(String fileName){  
        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  //檢測sd卡是否存在  
            T bean;  
            File sdCardDir = Environment.getExternalStorageDirectory();  
            File sdFile = new File(sdCardDir,fileName);  
            try {  
                FileInputStream fis = new FileInputStream(sdFile);  
                ObjectInputStream ois = new ObjectInputStream(fis);  
                bean = (T) ois.readObject();  
                fis.close();  
                ois.close();  
                return bean;  
            } catch (StreamCorruptedException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();    
                return null;  
            } catch (OptionalDataException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();    
                return null;  
            } catch (FileNotFoundException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();   
                return null;   
            } catch (IOException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();    
                return null;  
            } catch (ClassNotFoundException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();    
                return null;  
            }    
        }  
        else {  
            return null;  
        }  
    }  

    /** 
     * 讀取sd卡物件 
     * @param fileName 檔名 
     * @return 
     */  
    @SuppressWarnings("unchecked")  
    public List<T> readListFromSdCard(String fileName){  
        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  //檢測sd卡是否存在  
            List<T> list;  
            File sdCardDir = Environment.getExternalStorageDirectory();  
            File sdFile = new File(sdCardDir,fileName);  
            try {  
                FileInputStream fis = new FileInputStream(sdFile);  
                ObjectInputStream ois = new ObjectInputStream(fis);  
                list = (List<T>) ois.readObject();  
                fis.close();  
                ois.close();  
                return list;  
            } catch (StreamCorruptedException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();    
                return null;  
            } catch (OptionalDataException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();    
                return null;  
            } catch (FileNotFoundException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();   
                return null;   
            } catch (IOException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();    
                return null;  
            } catch (ClassNotFoundException e) {    
                // TODO Auto-generated catch block    
                e.printStackTrace();    
                return null;  
            }    
        }  
        else {  
            return null;  
        }  
    }  

}  

補充判斷是否存在

// 判斷檔案是否存在
    public boolean fileIsExists(String strFile) {
        try {
            if (Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED)) { // 檢測sd卡是否存在
                File sdCardDir = Environment.getExternalStorageDirectory();// 獲取sd卡目錄
                File sdFile = new File(sdCardDir, strFile);
                if (sdFile.exists()) {
                    return true;
                }
            }
        } catch (Exception e) {
            return false;
        }

        return false;
    }

原文地址