全部产品

文件存储

更新时间:2020-09-24 16:31:06

mPaaS 提供的文件存储基于 Android 原生 File,提供了加密能力。

重要:由于文件加密采用无线保镖提供的加密功能,请确保无线保镖加密图片已正确生成。

文件存储类型

  • ZFile:该文件类型存储在 data/data/package_name/files 下。
  • ZExternalFile:该文件类型存储在 sdcard/Android/data/package_name/files 下。
  • ZFileInputStream/ZFileOutputStream:文件存储输入输出流,使用该流则不进行加解密。
  • ZSecurityFileInputStream/ZSecurityFileOutputStream:文件存储安全输入输出流,使用该流则会进行加解密。

使用示例

文件转文本

  1. /**
  2. * 文件转文本
  3. * @param file 文件
  4. * @return 文本
  5. */
  6. public String file2String(File file) {
  7. InputStreamReader reader = null;
  8. StringWriter writer = new StringWriter();
  9. try {
  10. // 使用解密输入流ZSecurityFileInputStream
  11. // 如果不使用加解密功能,则请使用ZFileInputStream
  12. reader = new InputStreamReader(new ZSecurityFileInputStream(file, this));
  13. //将输入流写入输出流
  14. char[] buffer = new char[DEFAULT_BUFFER_SIZE];
  15. int n = 0;
  16. while (-1 != (n = reader.read(buffer))) {
  17. writer.write(buffer, 0, n);
  18. }
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. return null;
  22. } finally {
  23. if (reader != null)
  24. try {
  25. reader.close();
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. //返回转换结果
  31. if (writer != null) {
  32. return writer.toString();
  33. } else {
  34. return null;
  35. }
  36. }

文本转文件

  1. /**
  2. * 文本转文件
  3. * @param res 文本
  4. * @param file 文件
  5. * @return true表示成功,反之失败
  6. */
  7. public boolean string2File(String res, File file) {
  8. boolean flag = true;
  9. BufferedReader bufferedReader = null;
  10. BufferedWriter bufferedWriter;
  11. try {
  12. bufferedReader = new BufferedReader(new StringReader(res));
  13. // 使用加密输出流ZSecurityFileOutputStream
  14. // 如果不使用加解密功能,则请使用ZFileOutputStream
  15. bufferedWriter = new BufferedWriter(new OutputStreamWriter(new ZSecurityFileOutputStream(file, this)));
  16. //字符缓冲区
  17. char buf[] = new char[DEFAULT_BUFFER_SIZE];
  18. int len;
  19. while ((len = bufferedReader.read(buf)) != -1) {
  20. bufferedWriter.write(buf, 0, len);
  21. }
  22. bufferedWriter.flush();
  23. bufferedReader.close();
  24. bufferedWriter.close();
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. flag = false;
  28. return flag;
  29. } finally {
  30. if (bufferedReader != null) {
  31. try {
  32. bufferedReader.close();
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. }
  38. return flag;
  39. }

插入文件

  1. /**
  2. * 插入文件
  3. *
  4. * @param file 文件
  5. */
  6. private void insertFile(BaseFile file) {
  7. if (null == file) {
  8. return;
  9. }
  10. StringBuilder sb = new StringBuilder();
  11. String content = sb.append(file.getName())
  12. .append(' ')
  13. .append(SIMPLE_DATE_FORMAT.format(new Date(System.currentTimeMillis()))).toString();
  14. string2File(content, file);
  15. try {
  16. if (!file.exists()) {
  17. file.createNewFile();
  18. }
  19. mData.add(file);
  20. } catch (Exception e) {
  21. e.printStackTrace();
  22. }
  23. }

删除文件

  1. /**
  2. * 删除文件
  3. *
  4. * @param file 文件
  5. */
  6. private void deleteFile(BaseFile file) {
  7. try {
  8. file.delete();
  9. mData.remove(file);
  10. } catch (Exception e) {
  11. e.printStackTrace();
  12. }
  13. }