Adnroid提高效率之资源文件改名

在做开发过程中,经常会遇到UI设计提供得资源文件如下所示:

经常把相同的文件有个@2x,@3x放到同一个目录中。

但是这并不是我们想要的,通常在android开发过程中,都是需要分别放到drawable,drawable-xhbpi,drawable-xxhbpi等等相对应的目录中。

如何处理呢?

1、最最不靠谱的方式就是一个个分开拷贝到android的drawable,drawable-xhbpi,drawable-xxhbpi中。效率实在底下。

2、写代码来重命名和移动才是比较靠谱的。因为我不会js,python这样子的脚本语言。我使用java来写,也是效果一样。

项目结构:

代码:

import java.io.*
import java.util.*
import java.io.File


fun main() {
    // 1.读取配置文件
    val pro = Properties()
    try {
        val directory = File("")//参数为空
        val courseFile = directory.canonicalPath
        val propertiesPath = "$courseFile\src\modify.properties"
        println("配置文件路径:$propertiesPath")
        val fis = FileInputStream(propertiesPath)
        val isr = InputStreamReader(fis, "GBK")
        pro.load(isr)
        fis.close()
        isr.close()
    } catch (e: FileNotFoundException) {
        System.err.println("当前配置文件不存在")
        return
    } catch (e: IOException) {
        System.err.println("读取配置文件失败")
        return
    }

    // 2.读取配置文件内容

    // 需要去掉文件名中的字符
    val deleteString = pro["delete"] as String
    // 资源文件的目录
    val srcDirName = pro["srcDir"] as String
    // 输入文件的目录
    val targetDir = pro["targetDir"] as String

    println("delete:$deleteString")
    println("srcDirName:$srcDirName")
    println("targetDir:$targetDir")

    val srcDirFile = File(srcDirName)

    println("资源文件目录是否存在:${srcDirFile.absolutePath} 是否存在:${srcDirFile.exists()}")
    println("资源文件目录是否存在:${srcDirFile.absolutePath} 是否是目录:${srcDirFile.isDirectory}")

    if (srcDirFile.isFile) {
        System.err.println("资源文件应该配置为目录:$srcDirName")
        return
    }

    // 3.判断目标目录是否存在,不存在,则创建

    val targetDirFile = File(targetDir)

    if (!targetDirFile.exists()) {
        val isSuccess = targetDirFile.mkdirs();
        println("当前目标目录不存在,是否创建成功:$isSuccess")
        if (!isSuccess) {
            System.err.println("当前目标目录创建失败:${targetDirFile.absolutePath}")
            return
        }
    }

    val srcFileList = srcDirFile.listFiles()

    if (srcFileList == null) {
        System.err.println("该目录下未找到文件:$srcDirName")
        return
    }

    // 4.循环遍历资源目录下的文件,重命名并移动到目标目录下

    for (f in srcFileList) {
        if (f.name.contains(deleteString)) {
            val newFileName = f.name.replace(deleteString, "")
            val newFile = File(targetDirFile.absolutePath + "\" + newFileName)
            if (newFile.exists()) {
                val isDeleteSuccess = newFile.delete()
                if (!isDeleteSuccess) {
                    System.err.println("删除已存在的文件失败")
                    return
                }
            }
            println("新文件名:$newFileName" + " -- 新路径:${newFile.absolutePath}")
            f.copyTo(newFile)
        }
    }

    println("!!!!!!!!!!!!!!!!!处理成功!!!!!!!!!!!!!!!!!")
}

配置文件 modify.properties :

delete=@2x
srcDir=D:\项目\6.设计图\icon
targetDir=D:\项目\6.设计图\icon2


原文地址:https://www.cnblogs.com/hbolin/p/11320979.html