aliyun-oss-react-native

FileUtils.java 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.reactlibrary.utils;
  2. import android.content.Context;
  3. import android.net.Uri;
  4. import android.os.Environment;
  5. import android.text.TextUtils;
  6. import java.io.File;
  7. import java.io.FileOutputStream;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.io.OutputStream;
  11. public class FileUtils {
  12. /**
  13. * copy file
  14. * @param context
  15. * @param srcUri
  16. * @param dstFile
  17. */
  18. public static void copy(Context context, Uri srcUri, File dstFile) {
  19. try {
  20. InputStream is = context.getContentResolver().openInputStream(srcUri);
  21. if (is == null) return;
  22. OutputStream fos = new FileOutputStream(dstFile);
  23. byte[] bytes = new byte[1024];
  24. int count = is.read(bytes, 0, 1024);
  25. try {
  26. while (count > 0){
  27. fos.write(bytes, 0, count);
  28. count = is.read(bytes, 0, 1024);
  29. }
  30. } catch (IOException e1) {
  31. e1.printStackTrace();
  32. } finally{
  33. // close inputstream
  34. fos.close();
  35. is.close();
  36. }
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. /**
  42. * getFileName
  43. * @param uri
  44. * @return
  45. */
  46. public static String getFileName(Uri uri) {
  47. if (uri == null) return null;
  48. String fileName = null;
  49. String path = uri.getPath();
  50. int cut = path.lastIndexOf('/');
  51. if (cut != -1) {
  52. fileName = path.substring(cut + 1);
  53. }
  54. return fileName;
  55. }
  56. /**
  57. * getFilePathFromURI
  58. * @param context
  59. * @param contentUri
  60. * @return
  61. */
  62. public static String getFilePathFromURI(Context context, Uri contentUri) {
  63. //copy file and send new file path
  64. String fileName = getFileName(contentUri);
  65. if (!TextUtils.isEmpty(fileName)) {
  66. File copyFile = new File( Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + fileName);
  67. FileUtils.copy(context, contentUri, copyFile);
  68. return copyFile.getAbsolutePath();
  69. }
  70. return null;
  71. }
  72. }