public class DataStorageUtils { private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE" }; public static void verifyStoragePermissions(Activity activity) { try { //检测是否有写的权限 int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE"); if (permission != PackageManager.PERMISSION_GRANTED) { // 没有写的权限,去申请写的权限,会弹出对话框 ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE); } } catch (Exception e) { e.printStackTrace(); } } //判断文件是否存在 public static boolean fileIsExists(String strFile) { try { File f=new File(strFile); if(!f.exists()) { return false; } } catch (Exception e) { return false; } return true; } //保存在sd卡 public static boolean fileSave2SDCard(Object obj) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录 File sdFile = new File(sdCardDir, "obj.out"); FileOutputStream fos = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream(sdFile); oos = new ObjectOutputStream(fos); oos.writeObject(obj); //写入 oos.flush(); return true; } catch (IOException e) { e.printStackTrace(); } finally { try { if (fos != null) fos.close(); if (oos != null) oos.close(); } catch (IOException e) { e.printStackTrace(); } } } return false; } //保存在sd卡 public static boolean fileBean1SDCard(Object obj) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录 File sdFile = new File(sdCardDir, "obj1.out"); FileOutputStream fos = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream(sdFile); oos = new ObjectOutputStream(fos); oos.writeObject(obj); //写入 oos.flush(); return true; } catch (IOException e) { e.printStackTrace(); } finally { try { if (fos != null) fos.close(); if (oos != null) oos.close(); } catch (IOException e) { e.printStackTrace(); } } } return false; } //保存在sd卡 public static boolean fileBean2SDCard(Object obj) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录 File sdFile = new File(sdCardDir, "obj2.out"); FileOutputStream fos = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream(sdFile); oos = new ObjectOutputStream(fos); oos.writeObject(obj); //写入 oos.flush(); return true; } catch (IOException e) { e.printStackTrace(); } finally { try { if (fos != null) fos.close(); if (oos != null) oos.close(); } catch (IOException e) { e.printStackTrace(); } } } return false; } //保存在sd卡 public static boolean fileCardBean(Object obj,String fileName) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录 File sdFile = new File(sdCardDir, fileName+".out"); FileOutputStream fos = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream(sdFile); oos = new ObjectOutputStream(fos); oos.writeObject(obj); //写入 oos.flush(); return true; } catch (IOException e) { e.printStackTrace(); } finally { try { if (fos != null) fos.close(); if (oos != null) oos.close(); } catch (IOException e) { e.printStackTrace(); } } } return false; } public static Object readObjFromSDCard(String fileName) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { Object obj; File sdCardDir = Environment.getExternalStorageDirectory(); //获取SDCard目录 //File file = new File(Environment.getExternalStorageDirectory(), "/avator/" + "stf" + myApplication.staffId + System.currentTimeMillis() + ".jpg"); File sdFile = new File(sdCardDir, fileName + ".out"); FileInputStream fis = null; ObjectInputStream ois = null; try { fis = new FileInputStream(sdFile); //获得输入流 ois = new ObjectInputStream(fis); obj = ois.readObject(); return obj; } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } finally { try { if (fis != null) fis.close(); if (ois != null) ois.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** * 删除单个文件 * * @param fileName * 要删除的文件的文件名 * @return 单个文件删除成功返回true,否则返回false */ public static boolean deleteFile(String fileName) { File file = new File(fileName); // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除 if (file.exists() && file.isFile()) { if (file.delete()) { System.out.println("删除单个文件" + fileName + "成功!"); return true; } else { System.out.println("删除单个文件" + fileName + "失败!"); return false; } } else { System.out.println("删除单个文件失败:" + fileName + "不存在!"); return false; } } /** * 将String数据存为文件 */ public static File wtiteFileFromBytes(String name, String path) { byte[] b=name.getBytes(); BufferedOutputStream stream = null; File file = null; try { file = new File(path); FileOutputStream fstream = new FileOutputStream(file); stream = new BufferedOutputStream(fstream); stream.write(b); } catch (Exception e) { e.printStackTrace(); } finally { if (stream != null) { try { stream.close(); } catch (IOException e1) { e1.printStackTrace(); } } } return file; } public static String getFileData(String path){ StringBuffer buffer = new StringBuffer(); try { FileInputStream fis = new FileInputStream(path); InputStreamReader isr = new InputStreamReader(fis,"UTF-8");//文件编码Unicode,UTF-8,ASCII,GB2312,Big5 Reader in = new BufferedReader(isr); int ch; while ((ch = in.read()) > -1) { buffer.append((char)ch); } in.close(); } catch (IOException e) { Log.e("yichang","文件不存在!"); } return buffer.toString(); //buffer.toString())就是读出的内容字符 } }
Android 保存数据到SD卡 保存对象(做数据缓存)
最新推荐文章于 2023-04-05 09:51:35 发布