Browse Source

setDownloadDir函数支持完整路径参数

drake 3 years ago
parent
commit
3311da23b1
1 changed files with 16 additions and 6 deletions
  1. 16 6
      net/src/main/java/com/drake/net/response/ResponseExtension.kt

+ 16 - 6
net/src/main/java/com/drake/net/response/ResponseExtension.kt

@@ -70,9 +70,19 @@ fun Response.fileName(): String {
  */
 @Throws(DownloadFileException::class)
 fun Response.file(): File? {
-    val downloadDir = request.downloadFileDir()
-    val fileName = fileName()
-    var file = File(downloadDir, fileName)
+    var dir = request.downloadFileDir() // 下载目录
+    val fileName: String // 下载文件名
+    val dirFile = File(dir)
+    // 判断downloadDir是否为目录
+    var file = if (dirFile.isDirectory) {
+        fileName = fileName()
+        File(dir, fileName)
+    } else {
+        val temp = dir
+        dir = dir.substringBeforeLast(File.separatorChar)
+        fileName = temp.substringAfterLast(File.separatorChar)
+        dirFile
+    }
     try {
         if (file.exists()) {
             // MD5校验匹配文件
@@ -85,7 +95,7 @@ fun Response.file(): File? {
                 val fileExtension = file.extension
                 val fileNameWithoutExtension = file.nameWithoutExtension
                 fun rename(index: Long): File {
-                    file = File(downloadDir, fileNameWithoutExtension + "_($index)" + fileExtension)
+                    file = File(dir, fileNameWithoutExtension + "_($index)" + fileExtension)
                     return if (file.exists()) {
                         rename(index + 1)
                     } else file
@@ -96,7 +106,7 @@ fun Response.file(): File? {
 
         // 临时文件
         if (request.downloadTempFile()) {
-            file = File(downloadDir, file.name + ".net-download")
+            file = File(dir, file.name + ".net-download")
         }
         val source = body?.source() ?: return null
         if (!file.exists()) file.createNewFile()
@@ -105,7 +115,7 @@ fun Response.file(): File? {
         }
         // 下载完毕删除临时文件
         if (request.downloadTempFile()) {
-            val fileFinal = File(downloadDir, fileName)
+            val fileFinal = File(dir, fileName)
             file.renameTo(fileFinal)
             return fileFinal
         }