android本地、sd卡儲存物件或集合,以及讀取該物件
阿新 • • 發佈:2019-01-01
<!-- 在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;
}