Selaa lähdekoodia

Use String::indexOf instead of Pattern::matcher

cooperku_kdanmobile 5 vuotta sitten
vanhempi
commit
14f0fdbb20

+ 11 - 9
src/main/java/com/kdanmobile/reader/copyfile/CopyFileInfoFactory.kt

@@ -26,15 +26,17 @@ class CopyFileInfoFactory {
         if (null == uri) return null
         var filePath = UriToPathUtil.getInstance().getPath(applicationContext, uri)
         //  workaround
-        if (filePath.isNullOrEmpty() && null != uri.path) {
-            val folderName = kdanPdfReaderFolder.name
-            val pattern = Pattern.compile("$folderName/.*\\.(([Pp][Dd][Ff])|([Ee][Pp][Uu][Bb]))")
-            val matcher = pattern.matcher(uri.path)
-            if (matcher.find()) {
-                val path = "${kdanPdfReaderFolder.absolutePath}/${matcher.group().substring(folderName.length)}"
-                val file = File(path)
-                if (file.exists()) {
-                    filePath = file.absolutePath
+        if (filePath.isNullOrEmpty()) {
+            val folderName = if (kdanPdfReaderFolder.name.last() == File.separatorChar) kdanPdfReaderFolder.name else (kdanPdfReaderFolder.name + File.separatorChar)
+            uri.path?.also {
+                val index = it.indexOf(folderName)
+                if (index != -1) {
+                    val filename = it.substring(index + folderName.length)
+                    val path = "${kdanPdfReaderFolder.absolutePath}/$filename"
+                    val file = File(path)
+                    if (file.exists()) {
+                        filePath = file.absolutePath
+                    }
                 }
             }
         }